LuaLS / LuaLS/lua-language-server

Casting an otherwise unused variable in a block preserves the cast outside of block

Offen
#2,393 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.