LuaLS / LuaLS/lua-language-server
`@overload` does not cooperate with `@class` when adding overloads to an inherited class method
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Lua
- Estrelas
- 4.4k
- Forks
- 442
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Descrição
How are you using the lua-language-server?
NeoVim
Which OS are you using?
Linux
What is the issue affecting?
Completion
Expected Behaviour
Adding an overload to a function inherited from another class should result in both the parent class' overloads and the new overload being suggested as autocomplete and hover tooltip entries.
Actual Behaviour
Adding an overload to a function inherited from another class makes that overload the only one that is recognized for the current class.
Reproduction steps
---@meta
---@class ParentClass
ParentClass = {}
---@param arg string
---@return unknown
---@overload fun(self, arg: "bar"): boolean
function ParentClass:foo(arg) end
---@class ChildClass : ParentClass
---@field foo fun(self, arg: "baz"): number
ChildClass = {}
ChildClass:foo(--[[Should suggest both "bar" and "baz", but only suggests "baz" and "bar" raises a param-type-mismatch]])
Redefining the function and adding an @overload there yields the same result.
Additional Notes
Having some way to mark a function redefinition as an overload (with strict checking that it does exist in the class defined as inherited from) would probably help solve this issue.
Log File
No response
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece com o comportamento das anotações e do preenchimento automático de Lua mostrado na reprodução, concentrando-se em como a herança de @class e as declarações @overload são tratadas. Reproduza o caso no NeoVim e verifique se o preenchimento automático e o hover exibem tanto o overload "bar" herdado quanto o overload "baz" filho, sem incompatibilidade no tipo do parâmetro.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- lua
- Domínio
- devtools
- Tipo de issue
- Bug
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 45/100