diff --git a/changelog.md b/changelog.md index 33ded2855..906ffa5a3 100644 --- a/changelog.md +++ b/changelog.md @@ -5,6 +5,7 @@ * `CHG` completion: `completion.callSnippet` no longer generate parameter types * `CHG` hover: show `---@type {x: number, y: number}` as detail instead of `table` * `FIX` [#1278](https://github.com/sumneko/lua-language-server/issues/1278) +* `FIX` [#1288](https://github.com/sumneko/lua-language-server/issues/1288) ## 3.4.1 `2022-7-5` diff --git a/script/vm/compiler.lua b/script/vm/compiler.lua index cb54b054b..67ca3b41b 100644 --- a/script/vm/compiler.lua +++ b/script/vm/compiler.lua @@ -336,7 +336,6 @@ function vm.getClassFields(suri, object, key, ref, pushResult) -- check local field and global field if not hasFounded[key] and set.bindSources then for _, src in ipairs(set.bindSources) do - local skipSetLocal if src.value and src.value.type == 'table' then searchFieldSwitch('table', suri, src.value, key, ref, function (field) local fieldKey = guide.getKeyName(field) @@ -345,25 +344,20 @@ function vm.getClassFields(suri, object, key, ref, pushResult) and guide.isSet(field) then hasFounded[fieldKey] = true pushResult(field, true) - if src.type == 'local' then - skipSetLocal = true - end end end end) end - if not skipSetLocal then - searchFieldSwitch(src.type, suri, src, key, ref, function (field) - local fieldKey = guide.getKeyName(field) - if fieldKey then - if not searchedFields[fieldKey] - and guide.isSet(field) then - hasFounded[fieldKey] = true - pushResult(field, true) - end + searchFieldSwitch(src.type, suri, src, key, ref, function (field) + local fieldKey = guide.getKeyName(field) + if fieldKey and not hasFounded[fieldKey] then + if not searchedFields[fieldKey] + and guide.isSet(field) then + hasFounded[fieldKey] = true + pushResult(field, true) end - end) - end + end + end) end end -- look into extends(if field not found) diff --git a/test/hover/init.lua b/test/hover/init.lua index acb779bf9..476644fc1 100644 --- a/test/hover/init.lua +++ b/test/hover/init.lua @@ -2074,3 +2074,20 @@ local [[ local f: fun():(x: number, y: boolean) ]] + +TEST [[ +---@class MyClass +local MyClass = { + a = 1 +} + +function MyClass:Test() + +end +]] +[[ +(self) self: MyClass { + Test: function, + a: integer = 1, +} +]]