LuaLS / LuaLS/lua-language-server
No Protection on enum values as function input
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
Currently with code like the following:
---@enum TestEnum
TestEnum = {
ONE = "ONE",
TWO = "TWO",
THREE = "THREE",
}
---@param test_enum TestEnum
local function test(test_enum)
print(test_enum)
end
test(TestEnum.ONE) --- CORRECT: No error
test("ONE") --- CORRECT: No error
test(TestEnum.FOUR) --- INCORRECT: No error
test("FOUR") --- CORRECT: Error
There is no intellisense error for test(TestEnum.FOUR) like there is for test("FOUR")
It would be nice to get an error if you are trying to use a non-existing enum value (I have run into problems relating to this 😞) similarly if you are trying to use a string literal which doesn't match the enum.
I think this might be related to a wider issue where inputs to functions can be of type unknown even with the no-unknown setting.
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
Utilisez l’exemple fourni d’énumération et de fonction comme reproduction, en comparant les diagnostics pour TestEnum.FOUR et "FOUR". Suivez la vérification des types d’énumération et des arguments de fonction du serveur de langage, puis ajoutez une couverture pour les deux appels ; le travail sera terminé lorsque le membre d’énumération invalide sera diagnostiqué de manière cohérente avec le littéral de chaîne invalide.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- lua
- Domaine
- devtools
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100