LuaLS / LuaLS/lua-language-server

Ability to use specific enum keys as params

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

Chưa có ai nhận issue này.

enhancement
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ả

It would be nice to be able to use specific enum keys as params. For example today if you try to do something like this:

```
---@enum TestEnum
TestEnum = {
ONE = 1,
TWO = 2,
THREE = 3,
}

---@param test TestEnum.ONE
local function test(test)
end

test(TestEnum.ONE)
test(1)
```

You will get an error:
```
Cannot assign `integer` to parameter `TestEnum.ONE`.
- `integer` cannot match `TestEnum.ONE`
- Type `integer` cannot match `TestEnum.ONE`
- Type `number` cannot match `TestEnum.ONE`
```

Interestingly lls understands that TestEnum.ONE is a real thing just not that it is equal to TestEnum.ONE or 1. For exmaple if you try this:
```
---@enum TestEnum
TestEnum = {
ONE = 1,
TWO = 2,
THREE = 3,
}

---@param test TestEnum.One
local function test(test)
end

test(TestEnum.ONE)
test(1)
```
You will get an error:
```
---@param test TestEnum.NonEnumValue
```

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

Vì issue không xác định tệp, bài kiểm thử hoặc entry point nào, hãy bắt đầu bằng cách xác định phần kiểm tra kiểu enum và xử lý khả năng gán của tham số trong lua-language-server. Công việc được coi là hoàn tất khi TestEnum.ONE được chấp nhận cho TestEnum.ONE và giá trị nền 1 của nó được xử lý nhất quán, trong khi các khóa enum không hợp lệ vẫn bị từ chối.

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
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
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
35/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.