LuaLS / LuaLS/lua-language-server
Returning generics with `T<X, Y>`
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
Below, I have a generic list that uses fluid interface to return itself for some methods:
--- @class List
local List = {}
--- @generic T : List, V, _
--- @param self T<V, _>
--- @param value V # Element value to insert
--- @return T<V, _> # Returning itself (a generic)
function List:insert(value)
return self -- Returning itself (a generic)
end
-- test
---@type List<number, nil>
local mylist
local testingType = mylist:insert(1)
-- ^ Testing type is not `List<number, nil>` but literally `T<V, _>`

Expected behavior
testingType is of type List<number, nil>
I am thinking that this case could be something to look at for the 3.0 update.
(Edit: perfect #1000th issue...)
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
Le payload ne mentionne aucun fichier source ni aucun test. Commencez par reproduire l’exemple fourni de List:insert et comparez le type inféré avec le type attendu List<number, nil> ; suivez ensuite l’inférence du type de retour générique et ajoutez un test de régression confirmant que le résultat n’est plus le littéral T<V, _>.
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
- 35/100