LuaLS / LuaLS/lua-language-server

No Protection on enum values as function input

Ouverte
#2,384 2 commentaires 5 réactions 0 personnes assignées Voir sur GitHub

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")

Screenshot_1

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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.