diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2018-12-21 18:08:13 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2018-12-21 18:08:13 +0800 |
commit | 0d56d8653a28f12601deba8b1a137557cf42f6cd (patch) | |
tree | fdbf5409164326e3a8359b171a455db7230dfd10 | |
parent | 8683ecd814c99ee6aa4fe028798a007cb96bcdad (diff) | |
download | lua-language-server-0d56d8653a28f12601deba8b1a137557cf42f6cd.zip |
修正跳过可选参数没有立即关闭参数提示的问题
-rw-r--r-- | server/src/matcher/signature.lua | 2 | ||||
-rw-r--r-- | server/src/parser/grammar.lua | 2 | ||||
-rw-r--r-- | server/test/signature/init.lua | 22 |
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) |