BUG: 当_ENV作为多重赋值的第一个变量时, 后续变量会错误的识别成局部变量.
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Lua
- Star
- 76
- Fork
- 13
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
这是非常罕见的场景, 并且建议避免编写这种代码.
```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)错误提示.

Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện đoạn mã Lua thông qua parser.compile và kiểm tra state.ast.locals cùng các giá trị ast.type cho từng đích gán. So sánh kết quả đối với _ENV, a, a.x và a[1]; hoàn thành khi phép gán không còn tạo ra các biến cục bộ không chính xác hoặc đánh dấu mọi đích là 'local'.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- lua
- Lĩnh vực
- compilers
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100