From 3b8c92f7b74834fd8223d32df3f012e1c8a0a1cf Mon Sep 17 00:00:00 2001 From: sumneko Date: Tue, 7 May 2019 14:46:06 +0800 Subject: =?UTF-8?q?=E5=85=88=E7=89=B9=E6=AE=8A=E5=A4=84=E7=90=86=E4=B8=80?= =?UTF-8?q?=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/core/find_source.lua | 4 +++- server/test/completion/init.lua | 30 ++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) 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 @@ -906,6 +906,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) -- cgit v1.2.3