LuaLS / LuaLS/LuaParser

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

Aperta
#9 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Lua
Stelle
76
Fork
13
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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

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

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia riproducendo lo snippet Lua tramite parser.compile e ispeziona state.ast.locals e i valori di ast.type per ogni destinazione dell’assegnazione. Confronta il risultato per _ENV, a, a.x e a[1]; il lavoro è completato quando l’assegnazione non crea più variabili locali errate né contrassegna ogni destinazione come 'local'.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
lua
Ambito
compilers
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.