BUG: 当_ENV作为多重赋值的第一个变量时, 后续变量会错误的识别成局部变量.
未关闭
还没有人认领这个 Issue。
- 主要语言
- Lua
- 星标
- 76
- 派生
- 13
- PR 合并指标
- 30 天内没有已合并 PR
描述
这是非常罕见的场景, 并且建议避免编写这种代码.
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插件错误提示.
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先通过 parser.compile 重现 Lua 代码片段,并检查每个赋值目标的 state.ast.locals 和 ast.type 值。比较 _ENV、a、a.x 和 a[1] 的结果;完成的标准是赋值不再创建错误的局部变量,也不再将每个目标标记为 'local'。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- lua
- 领域
- compilers
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100