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

Abierto
#9 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
lua
Área
compilers

Línea de trabajo

Empieza reproduciendo el fragmento de Lua mediante parser.compile e inspecciona state.ast.locals y los valores de ast.type para cada destino de asignación. Compara el resultado para _ENV, a, a.x y a[1]; se considera completado cuando la asignación ya no crea variables locales incorrectas ni marca todos los destinos como 'local'.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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

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

Lenguaje dominante
Lua
Estrellas
76
Forks
13
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.