aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Nibecker <hello@mattnibecker.com>2020-12-12 21:16:43 -0500
committerJames McCoy <jamessan@jamessan.com>2020-12-13 21:03:27 -0500
commite8ae3ade770843681f72fc49be45338b39bea922 (patch)
tree403559585bc84bc1740f1f7b1348b1ee45e8343d
parent9c5b4c87e19657d605f1917503be54298967ad45 (diff)
downloadrneovim-e8ae3ade770843681f72fc49be45338b39bea922.tar.gz
rneovim-e8ae3ade770843681f72fc49be45338b39bea922.tar.bz2
rneovim-e8ae3ade770843681f72fc49be45338b39bea922.zip
Fix lsp tests breaking from new LuaJIT version
Apparently the new version of LuaJIT changed the consistency with which it sorted table dictionaries. IIRC lua sorts dictionary keys by memory address, so it would appear that the reasons tests were previously passing was because of a differentiation in the implementation of the lua runtime. Ensure that array fields in the lsp protocol tables are consistently created, by using ipair when generating arrays for completionItemKind and symbolItemKind. For CodeActionKind, the current implementation includes both the keys and the values in the array. This is incorrect. Ensure that only the values are included in the array and sort them for consistency.
-rw-r--r--runtime/lua/vim/lsp/protocol.lua17
1 files changed, 11 insertions, 6 deletions
diff --git a/runtime/lua/vim/lsp/protocol.lua b/runtime/lua/vim/lsp/protocol.lua
index 218424fa14..fd86d8bb97 100644
--- a/runtime/lua/vim/lsp/protocol.lua
+++ b/runtime/lua/vim/lsp/protocol.lua
@@ -292,8 +292,9 @@ local constants = {
}
for k, v in pairs(constants) do
- vim.tbl_add_reverse_lookup(v)
- protocol[k] = v
+ local tbl = vim.deepcopy(v)
+ vim.tbl_add_reverse_lookup(tbl)
+ protocol[k] = tbl
end
--[=[
@@ -623,7 +624,11 @@ function protocol.make_client_capabilities()
codeActionLiteralSupport = {
codeActionKind = {
- valueSet = vim.tbl_values(protocol.CodeActionKind);
+ valueSet = (function()
+ local res = vim.tbl_values(protocol.CodeActionKind)
+ table.sort(res)
+ return res
+ end)();
};
};
};
@@ -643,7 +648,7 @@ function protocol.make_client_capabilities()
completionItemKind = {
valueSet = (function()
local res = {}
- for k in pairs(protocol.CompletionItemKind) do
+ for k in ipairs(protocol.CompletionItemKind) do
if type(k) == 'number' then table.insert(res, k) end
end
return res
@@ -689,7 +694,7 @@ function protocol.make_client_capabilities()
symbolKind = {
valueSet = (function()
local res = {}
- for k in pairs(protocol.SymbolKind) do
+ for k in ipairs(protocol.SymbolKind) do
if type(k) == 'number' then table.insert(res, k) end
end
return res
@@ -708,7 +713,7 @@ function protocol.make_client_capabilities()
symbolKind = {
valueSet = (function()
local res = {}
- for k in pairs(protocol.SymbolKind) do
+ for k in ipairs(protocol.SymbolKind) do
if type(k) == 'number' then table.insert(res, k) end
end
return res