diff options
author | kevinhwang91 <kevin.hwang@live.com> | 2022-04-02 22:47:16 +0800 |
---|---|---|
committer | kevinhwang91 <kevin.hwang@live.com> | 2022-04-02 22:58:03 +0800 |
commit | b207c282d0cada8bcee641e68d65e8f6586c9381 (patch) | |
tree | ea0a408aa1a472d0a1f11420fe750ce8d2fb3a1c | |
parent | 499cd3acfe00bc38899d1bab2ed1b39dd11e14f6 (diff) | |
download | lua-language-server-b207c282d0cada8bcee641e68d65e8f6586c9381.zip |
fix(semantic-tokens): coreect token type priority
If metatable with `__call` method, adding `@class` and `@type fun()`
together for a class make the token be regarded as function, we should
make sure `@class` override `@type`.
-rw-r--r-- | script/core/semantic-tokens.lua | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/script/core/semantic-tokens.lua b/script/core/semantic-tokens.lua index ef426633..f16acafc 100644 --- a/script/core/semantic-tokens.lua +++ b/script/core/semantic-tokens.lua @@ -161,17 +161,7 @@ local Care = util.switch() } return end - -- 5. References to other functions - if infer.hasType(loc, 'function') then - results[#results+1] = { - start = source.start, - finish = source.finish, - type = define.TokenTypes['function'], - modifieres = source.type == 'setlocal' and define.TokenModifiers.declaration or nil, - } - return - end - -- 6. Class declaration + -- 5. Class declaration -- only search this local if loc.bindDocs then for i, doc in ipairs(loc.bindDocs) do @@ -189,7 +179,17 @@ local Care = util.switch() end end end - -- 6. const 变量 | Const variable + -- 6. References to other functions + if infer.hasType(loc, 'function') then + results[#results+1] = { + start = source.start, + finish = source.finish, + type = define.TokenTypes['function'], + modifieres = source.type == 'setlocal' and define.TokenModifiers.declaration or nil, + } + return + end + -- 7. const 变量 | Const variable if loc.attrs then for _, attr in ipairs(loc.attrs) do local name = attr[1] |