diff options
-rw-r--r-- | changelog.md | 3 | ||||
-rw-r--r-- | script/vm/field.lua | 11 | ||||
-rw-r--r-- | test/completion/common.lua | 13 |
3 files changed, 27 insertions, 0 deletions
diff --git a/changelog.md b/changelog.md index 7623409b..983af002 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,8 @@ # changelog +## 3.1.1 +* `FIX` [#1051](https://github.com/sumneko/lua-language-server/issues/1051) + ## 3.1.0 `2022-4-17` * `NEW` support find definition in method diff --git a/script/vm/field.lua b/script/vm/field.lua index ba7cd4c1..614dc89b 100644 --- a/script/vm/field.lua +++ b/script/vm/field.lua @@ -2,6 +2,7 @@ local vm = require 'vm.vm' local util = require 'utility' local guide = require 'parser.guide' +local localID = require 'vm.local-id' local searchByNodeSwitch = util.switch() : case 'global' @@ -15,6 +16,15 @@ local searchByNodeSwitch = util.switch() pushResult(source) end) +local function searchByLocalID(source, pushResult) + local fields = localID.getFields(source) + if fields then + for _, field in ipairs(fields) do + pushResult(field) + end + end +end + local function searchByNode(source, pushResult) local uri = guide.getUri(source) vm.compileByParentNode(source, nil, true, function (field) @@ -35,6 +45,7 @@ function vm.getFields(source) end end + searchByLocalID(source, pushResult) searchByNode(source, pushResult) return results diff --git a/test/completion/common.lua b/test/completion/common.lua index 538ac401..1fc37bb5 100644 --- a/test/completion/common.lua +++ b/test/completion/common.lua @@ -3311,3 +3311,16 @@ TEST [[ end assert(count == 1) end) + +TEST [[ +local x +x.y.z = xxx + +x.y.<??> +]] +{ + { + label = 'z', + kind = define.CompletionItemKind.Field, + } +} |