LuaLS / LuaLS/lua-language-server
No Protection on enum values as function input
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Lua
- Sterne
- 4.4k
- Forks
- 442
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
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.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Verwende das bereitgestellte Enum- und Funktionsbeispiel als Reproduktion und vergleiche die Diagnosen für TestEnum.FOUR und "FOUR". Verfolge die Typprüfung des Language Servers für Enum- und Funktionsargumente und füge Abdeckung für beide Aufrufe hinzu; fertig, wenn das ungültige Enum-Mitglied konsistent mit dem ungültigen String-Literal diagnostiziert wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- lua
- Bereich
- devtools
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100