summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2018-12-21 18:08:13 +0800
committer最萌小汐 <sumneko@hotmail.com>2018-12-21 18:08:13 +0800
commit0d56d8653a28f12601deba8b1a137557cf42f6cd (patch)
treefdbf5409164326e3a8359b171a455db7230dfd10
parent8683ecd814c99ee6aa4fe028798a007cb96bcdad (diff)
downloadlua-language-server-0d56d8653a28f12601deba8b1a137557cf42f6cd.zip
修正跳过可选参数没有立即关闭参数提示的问题
-rw-r--r--server/src/matcher/signature.lua2
-rw-r--r--server/src/parser/grammar.lua2
-rw-r--r--server/test/signature/init.lua22
3 files changed, 17 insertions, 9 deletions
diff --git a/server/src/matcher/signature.lua b/server/src/matcher/signature.lua
index c62117fc..413e305c 100644
--- a/server/src/matcher/signature.lua
+++ b/server/src/matcher/signature.lua
@@ -1,7 +1,7 @@
local hover = require 'matcher.hover'
local function isContainPos(obj, pos)
- if obj.start <= pos and obj.finish + 1 >= pos then
+ if obj.start <= pos and obj.finish >= pos then
return true
end
return false
diff --git a/server/src/parser/grammar.lua b/server/src/parser/grammar.lua
index 942c23fc..32be697b 100644
--- a/server/src/parser/grammar.lua
+++ b/server/src/parser/grammar.lua
@@ -268,7 +268,7 @@ Suffix <- DOT MustName
/ Sp ({} Table {}) -> Call
/ Sp ({} String {}) -> Call
/ BL Exp -> Index BR
- / Sp ({} PL ExpList PR? {}) -> Call
+ / Sp ({} PL ExpList (PR / Sp) {}) -> Call
DirtyExp <- Exp / DirtyName
ExpList <- (COMMA DirtyExp)+
diff --git a/server/test/signature/init.lua b/server/test/signature/init.lua
index bc3713d7..89863f12 100644
--- a/server/test/signature/init.lua
+++ b/server/test/signature/init.lua
@@ -11,15 +11,18 @@ function TEST(script)
local vm = matcher.vm(ast)
assert(vm)
local hovers = matcher.signature(vm, pos)
- assert(hovers)
- local hover = hovers[#hovers]
+ if hovers then
+ local hover = hovers[#hovers]
- local label = hover.label:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
- expect.label = expect.label:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
- local arg = hover.argLabel
+ local label = hover.label:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
+ expect.label = expect.label:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
+ local arg = hover.argLabel
- assert(expect.label == label)
- assert(expect.arg == arg)
+ assert(expect.label == label)
+ assert(expect.arg == arg)
+ else
+ assert(expect == nil)
+ end
end
end
@@ -66,3 +69,8 @@ function *string:sub(i: integer [, j: integer(-1)])
]],
arg = 'i: integer'
}
+
+TEST [[
+(''):sub(1)@
+]]
+(nil)