Class generics produce unusable and wrong union types
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Reproduisez le problème en analysant l’extrait Lua dans VS Code avec lua-language-server installé, en vous concentrant sur les suggestions de complétion pour Stack.New et les méthodes Peek, Pop et Push. Comparez les types inférés de a, b et c avec les suggestions de méthodes attendues sans types union ; le travail est terminé lorsque les méthodes n’affichent plus de types union inutilisables ou superflus, ni d’espaces réservés génériques parasites.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
MacOS, Windows
What is the issue affecting?
Completion
Expected Behaviour
Methods Peek,Push,Pop have proper type hints
Actual Behaviour
While types of a, b, c are correct the
type hints of methods are unusable with unnecessary union types.
If Push is removed from superclass, then type hints go to normal without unions but still with <T> in many places
local _lua_setmetatable = setmetatable
Stack = {}
--- @generic T
--- @class Stack<T> : {
--- Pop: (fun(self: Stack<T>): T),
--- Peek: (fun(self: Stack<T>): T),
--- Push: (fun(self: Stack<T>, value: T): Stack<T>),
--- }
--- @field protected _stack any[]
--- @field protected _count integer
Stack.__index = {}
--- Creates a new, empty stack.
--- @generic T
--- @return Stack<T>
function Stack.New()
local this = {
_stack = {},
_count = 0,
}
return _lua_setmetatable(this, Stack)
end
local st = Stack.New() --[[@as Stack<{ num: integer }>]]
local a = st:Peek()
local b = st:Pop()
local c = st:Push({})
Reproduction steps
Analyze specified code in VSCode with luals installed
Additional Notes
No response
Log File
No response
- Langage dominant
- Lua
- Étoiles
- 4.4k
- Forks
- 442
- Merge moyen
- 8 j 9 h
- PR mergées (30 j)
- 1
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.
Autres issues de LuaLS/lua-language-server
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
LuaLS/lua-language-server#1776 ·
-
泛型for迭代器的类型推导漏掉了带__call的类 Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 65/100
LuaLS/lua-language-server#3463 · 5 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
LuaLS/lua-language-server#3461 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
LuaLS/lua-language-server#3460 · 1 commentaire · 1 réaction ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
LuaLS/lua-language-server#3459 · 1 réaction ·
Toutes les issues de LuaLS/lua-language-server
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
HenrikBengtsson/CBI-software#134 ·
-
Nmap
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
secondlife/slua#96 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100