LuaLS / LuaLS/LuaParser

BUG: 当_ENV作为多重赋值的第一个变量时, 后续变量会错误的识别成局部变量.

Offen
#9 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Lua
Sterne
76
Forks
13
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

这是非常罕见的场景, 并且建议避免编写这种代码.

local env = _ENV
_ENV, a = {}, 1
env.print(env.a, a) -- 1 nil

使用parser.compile函数解析得到的state.ast.locals会多出错误的局部变量_ENVa.
整个多重赋值语句都会识别成local变量定义, 不管是a, a.x, a[1]形式, 生成的ast.type字段都会被错误的标识成'local'.

同时也会导致vscode插件错误提示.
image

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

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

Beginne damit, das Lua-Snippet über parser.compile zu reproduzieren, und untersuche state.ast.locals sowie die ast.type-Werte für jedes Zuweisungsziel. Vergleiche das Ergebnis für _ENV, a, a.x und a[1]; abgeschlossen ist die Aufgabe, wenn die Zuweisung keine falschen lokalen Variablen mehr erstellt oder jedes Ziel als 'local' markiert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
lua
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 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.