summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changelog.md1
-rw-r--r--script/vm/compiler.lua24
-rw-r--r--test/hover/init.lua17
3 files changed, 27 insertions, 15 deletions
diff --git a/changelog.md b/changelog.md
index 33ded285..906ffa5a 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 cb54b054..67ca3b41 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 acb779bf..476644fc 100644
--- a/test/hover/init.lua
+++ b/test/hover/init.lua
@@ -2074,3 +2074,20 @@ local <?f?>
[[
local f: fun():(x: number, y: boolean)
]]
+
+TEST [[
+---@class MyClass
+local MyClass = {
+ a = 1
+}
+
+function MyClass:Test()
+ <?self?>
+end
+]]
+[[
+(self) self: MyClass {
+ Test: function,
+ a: integer = 1,
+}
+]]