diff --git a/changelog.md b/changelog.md index 16c31605a364c2b92adb08154dc8c8f7fd8b3b13..e9b98ef6d55b229a02cb5ee33fbe8c667fab8654 100644 --- a/changelog.md +++ b/changelog.md @@ -17,6 +17,7 @@ * `CHG` completion: improve misspelling results * `FIX` runtime errors * `FIX` hint: may show param-2 as `self` +* `FIX` [#660](https://github.com/sumneko/lua-language-server/issues/660) ## 2.3.7 `2021-8-17` diff --git a/script/core/noder.lua b/script/core/noder.lua index 70c24c85407f0b04305b2b725415f435914fb5bf..3fd316eba153b084c9db03e4fa1bd455ba1ba22f 100644 --- a/script/core/noder.lua +++ b/script/core/noder.lua @@ -57,8 +57,10 @@ local INFO_META_INDEX = { end } local INFO_CLASS_TO_EXNTENDS = { - filter = function (_, field) + filter = function (_, field, mode) return field ~= nil + or mode == 'field' + or mode == 'allfield' end, filterValid = function (_, field) return not field diff --git a/script/core/searcher.lua b/script/core/searcher.lua index 108a9c37f4af805ec5343d1f6920fd22595052b6..1407d617fc7bcaf0052f659414529c694f6201ee 100644 --- a/script/core/searcher.lua +++ b/script/core/searcher.lua @@ -617,7 +617,7 @@ function m.searchRefsByID(status, suri, expect, mode) ---@param info node.info local function checkInfoFilter(id, field, info) for filter in next, filters do - if not filter(id, field) then + if not filter(id, field, mode) then return false end end diff --git a/test/completion/common.lua b/test/completion/common.lua index b3a2a36ae2ed38a4a046b249241b08ac07c2abca..2efa63ad75166a80e4f95859c39d50b53e02dca0 100644 --- a/test/completion/common.lua +++ b/test/completion/common.lua @@ -2637,3 +2637,19 @@ m.$ { [1] = EXISTS, } + +TEST [[ +---@class class1 +class1 = {} + +function class1:method1() end + +---@class class2 : class1 +class2 = {} + +class2:$ + +]] +{ + [1] = EXISTS, +}