LuaLS / LuaLS/lua-language-server
Incorrect types used for overloaded class when passed as argument
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?
Type Checking
Expected Behaviour
When a class which is overloaded as a function, if that class is passed as an argument to another function it should be checked as if it is a function if the argument has a function type.
---@param f function
local function call(f) f() end
---@class foo
---@overload fun()
local something = setmetatable({}, {__call = function () end})
call(something) -- <-- Here something should be treated as `fun()`
Actual Behaviour
The type of the class is treated as foo|fun() which results in a warning because foo does not match function.
Reproduction steps
- Create a class with an overload
- Pass it to another function which takes a function argument
- Observe that a warning is produced
Additional Notes
No response
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 la reproduction Lua fournie et suivez le chemin de vérification des types pour les arguments de fonction et les classes surchargées. C'est terminé lorsque l'exemple n'émet plus d'avertissement quand la classe appelable est passée à un paramètre de type fonction, tandis que les étapes de reproduction continuent de fonctionner correctement.
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é
- Plutôt claire
- Accessibilité débutants
- 42/100