BUG: 当_ENV作为多重赋值的第一个变量时, 后续变量会错误的识别成局部变量.
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)错误提示.

Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- 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