LuaLS / LuaLS/lua-language-server
Casting an otherwise unused variable in a block preserves the cast outside of block
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Lua
- Sterne
- 4.4k
- Forks
- 442
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
Windows
What is the issue affecting?
Type Checking
Expected Behaviour
Any casts inside a block should not be maintained once leaving that block.
Actual Behaviour
Type cast is maintained even after the block in which the variable was cast if and only if the variable was not used in that block.
Reproduction steps
This is incorrect:
---@type number|string
local i
if true then --can be `false` or any other logical
---@cast i number
local _ = 0 --not referencing variable `i` that was cast above
end
local j = i --type of j is `number`, should be `number|string`
This is correct:
---@type number|string
local i
if true then --can be `false` or any other logical
---@cast i number
local _ = i -- referencing variable `i` that was cast above
end
local j = i --type of j is `number|string`
Additional Notes
No response
Log File
No response
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
Reproduziere beide Lua-Snippets über die Visual Studio Code-Erweiterung und vergleiche den abgeleiteten Typ von j nach dem Block. Verfolge den Type-Checking-Pfad für die @cast-Behandlung, wenn die Cast-Variable unbenutzt ist, und überprüfe, dass der Cast den Block nicht überdauert, während der Fall mit einer Referenz innerhalb des Blocks weiterhin korrekt bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- lua
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100