LuaLS / LuaLS/lua-language-server
`@overload` does not cooperate with `@class` when adding overloads to an inherited class method
Personne n'a encore pris cette issue.
- Langage dominant
- Lua
- Étoiles
- 4.4k
- Forks
- 442
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
### 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
```lua
---@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_
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par le comportement des annotations et de la complétion Lua présenté dans la reproduction, en vous concentrant sur la gestion de l’héritage de @class et des déclarations @overload. Reproduisez le cas dans NeoVim et vérifiez que la complétion et le survol affichent à la fois l’overload "bar" hérité et l’overload "baz" de l’enfant, sans incompatibilité de type de paramètre.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- lua
- Domaine
- devtools
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 45/100