LuaLS / LuaLS/LuaParser

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

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

Nadie ha tomado este issue todavía.

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

Descripción

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

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

同时也会导致[vscode插件](https://github.com/LuaLS/lua-language-server)错误提示.
![image](https://github.com/LuaLS/LuaParser/assets/73267079/19d1acbc-a837-408f-bc68-96b1109f6f63)

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.

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.

Evaluación

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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.