LuaLS / LuaLS/lua-language-server
Do not shadow/re-inject fields in child-classes
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?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
Linux
What is the issue affecting?
Diagnostics/Syntax Checking
Expected Behaviour
When assigning to a field which is already defined in one of it's supers, no injection should be used.
Actual Behaviour
Assigning to existing field is not possible as I effectively end up with two fields A.test and B.test.
The only valid workaround I know would be using setters in A.
Just disabling (exact) does not solve the issue, just disable the warning.
Reproduction steps
---@class (exact) A
---@field test number
local a = {}
function a:init()
--This is fine
self.test = 0
end
---@class (exact) B : A
local b = {}
function b:init()
--This is an injection and thus invalid
self.test = 0
end
Additional Notes
If shadowing a field is explicitly wanted, one can still define/type explicitly. But I think by default, no additional field should get injected.
Issue is a bit related to @override (#2569).
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 dans l’issue et suivez le chemin des diagnostics/de la vérification de types pour les affectations aux champs hérités via B : A. La correction est terminée lorsque self.test = 0 dans B:init() n’injecte pas un second champ pour le A.test hérité, tout en laissant possible la shadowing explicitement demandée.
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é
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100