diff options
author | Crollie Rollz <crollierollz@gmail.com> | 2022-04-03 01:45:58 +0800 |
---|---|---|
committer | Crollie Rollz <crollierollz@gmail.com> | 2022-04-03 02:50:52 +0800 |
commit | af68d1e84435b1fbbf30ef24658255206f1ff7b3 (patch) | |
tree | 53077c8b7944a102cfe283f4072e372188e44b9e | |
parent | 499cd3acfe00bc38899d1bab2ed1b39dd11e14f6 (diff) | |
download | lua-language-server-af68d1e84435b1fbbf30ef24658255206f1ff7b3.zip |
fix(completion): OOP emitter should have `self` arg
3db634a3a2e48a97772065e7e9da4d29a07a8098
Align docFUnc with the call index, rather than assume it's always the 2nd arg
(where "self" is concerned this is the 3rd arg)
-rw-r--r-- | script/core/completion/completion.lua | 2 | ||||
-rw-r--r-- | test/completion/common.lua | 22 |
2 files changed, 20 insertions, 4 deletions
diff --git a/script/core/completion/completion.lua b/script/core/completion/completion.lua index 969de95a..eadf2739 100644 --- a/script/core/completion/completion.lua +++ b/script/core/completion/completion.lua @@ -1401,7 +1401,7 @@ local function getCallEnumsAndFuncs(source, index, oop, call) and doc.field[1] == source[1] then local eventName = noder.getFieldEventName(doc) if eventName and eventName == myEventName then - local docFunc = doc.extends.types[1].args[2].extends.types[1] + local docFunc = doc.extends.types[1].args[index].extends.types[1] results[#results+1] = { label = infer.viewDocFunction(docFunc), description = doc.comment, diff --git a/test/completion/common.lua b/test/completion/common.lua index 787549f7..22d9f554 100644 --- a/test/completion/common.lua +++ b/test/completion/common.lua @@ -2640,9 +2640,9 @@ class2:<??> TEST [[ --- @class Emit ---- @field on fun(eventName: string, cb: function) ---- @field on fun(eventName: '"died"', cb: fun(i: integer)) ---- @field on fun(eventName: '"won"', cb: fun(s: string)) +--- @field on fun(self: Emit, eventName: string, cb: function) +--- @field on fun(self: Emit, eventName: '"died"', cb: fun(i: integer)) +--- @field on fun(self: Emit, eventName: '"won"', cb: fun(s: string)) local emit = {} emit:on('<??>') @@ -2656,6 +2656,22 @@ TEST [[ --- @field on fun(eventName: '"won"', cb: fun(s: string)) local emit = {} +emit.on('died', <??>) +]] +{ + [1] = { + label = 'fun(i: integer)', + kind = define.CompletionItemKind.Function, + } +} + +TEST [[ +--- @class Emit +--- @field on fun(self: Emit, eventName: string, cb: function) +--- @field on fun(self: Emit, eventName: '"died"', cb: fun(i: integer)) +--- @field on fun(self: Emit, eventName: '"won"', cb: fun(s: string)) +local emit = {} + emit:on('won', <??>) ]] { |