LuaLS / LuaLS/lua-language-server

Indexing a table by an enum's value

Đang mở
#2,410 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

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

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. 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

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.