BUG: 当_ENV作为多重赋值的第一个变量时, 后续变量会错误的识别成局部变量.
Personne n'a encore pris cette issue.
- Langage dominant
- Lua
- Étoiles
- 76
- Forks
- 13
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
这是非常罕见的场景, 并且建议避免编写这种代码.
```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)错误提示.

Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’extrait Lua via parser.compile et inspectez state.ast.locals ainsi que les valeurs de ast.type pour chaque cible d’affectation. Comparez le résultat pour _ENV, a, a.x et a[1] ; le travail est terminé lorsque l’affectation ne crée plus de variables locales incorrectes et ne marque plus chaque cible comme 'local'.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- lua
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100