LuaLS / LuaLS/lua-language-server
Indexing a table by an enum's value
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Lua
- Star
- 4.4k
- Fork
- 442
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
Linux
What is the issue affecting?
Diagnostics/Syntax Checking
Expected Behaviour
Types defined with an enum as their key should be accessible via both the runtime enum itself and the value they represent.
Actual Behaviour
A type defined with an enum as its key cannot be accessed with the enum's value.
Reproduction steps
---@enum building_id
local building_id = {
ANY = -1,
ONE = 0,
TWO = 1,
}
---@type { [building_id]: { name: string } }
local building_attributes = {}
local anyName = building_attributes[building_id.ANY].name // Typed as "string"
local anyName = building_attributes[-1].name // Typed as "unknown"
Additional Notes
Discussed in https://github.com/LuaLS/lua-language-server/discussions/2402
Log File
No response
Hướng dẫn đóng góp
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
Tái hiện vấn đề diagnostics trong ví dụ Lua được cung cấp, bắt đầu với việc xử lý các khóa enum trong đường dẫn kiểm tra kiểu của language server. So sánh việc truy cập thông qua building_id.ANY với việc truy cập thông qua -1, và sử dụng phần thảo luận được liên kết trong issue làm ngữ cảnh; được xem là hoàn thành khi cả hai dạng đều phân giải giá trị bảng thành { name: string } thay vì unknown.
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
- devtools
- 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