diff options
author | sumneko <sumneko@hotmail.com> | 2019-05-07 14:46:06 +0800 |
---|---|---|
committer | sumneko <sumneko@hotmail.com> | 2019-05-07 14:46:06 +0800 |
commit | 3b8c92f7b74834fd8223d32df3f012e1c8a0a1cf (patch) | |
tree | 9bcacb59bd87412441d5ade1742bc2e2f612a88b | |
parent | 717729c33ce10067aac8afddd2fc2a5da9d801b5 (diff) | |
download | lua-language-server-3b8c92f7b74834fd8223d32df3f012e1c8a0a1cf.zip |
先特殊处理一下
-rw-r--r-- | server/src/core/find_source.lua | 4 | ||||
-rw-r--r-- | server/test/completion/init.lua | 30 |
2 files changed, 33 insertions, 1 deletions
diff --git a/server/src/core/find_source.lua b/server/src/core/find_source.lua index cac3a263..a64a047e 100644 --- a/server/src/core/find_source.lua +++ b/server/src/core/find_source.lua @@ -39,8 +39,10 @@ local function findAtPos(vm, pos, filter) if rangeA == rangeB then if b.type == 'call' and #b == 1 and b[1] == a then return true - else + elseif a.type == 'call' and #a == 1 and a[1] == b then return false + else + return a.id < b.id end end return rangeA < rangeB diff --git a/server/test/completion/init.lua b/server/test/completion/init.lua index 19bf927a..f288af2a 100644 --- a/server/test/completion/init.lua +++ b/server/test/completion/init.lua @@ -907,6 +907,36 @@ a any } TEST [[ +local function f() + ---@param $ + function f(a, b, c) + end +end +]] +{ + { + label = 'a, b, c', + kind = CompletionItemKind.Snippet, + insertText = [[ +a any +---@param b any +---@param c any]] + }, + { + label = 'a', + kind = CompletionItemKind.Interface, + }, + { + label = 'b', + kind = CompletionItemKind.Interface, + }, + { + label = 'c', + kind = CompletionItemKind.Interface, + }, +} + +TEST [[ ---@param $ function mt:f(a, b, c) end |