LuaLS / LuaLS/lua-language-server

[Feature request] Implicit casts for common conversions

Đang mở
#3,027 4 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ả

I got some code for parsing command line flags/user inputs that commonly uses patterns like this

---@return string ...
local function strsplit(str, sep) end

local a, b, c = strsplit(userinput, ",")
b = tonumber(b) or 0 -- error:  This variable is defined as type `string`. Cannot convert its type to `number`

The fix is to define b as string|number in the declaration, but it's a bit cumbersome, especially if I just want b as a number:

local a,
---@type number|string
b, c = strsplit(userinput, ",")

So it would be nice if common type conversion patterns like this could be recognized automatically and either allow the cast or infer the type as string|number from the beginning.

Edit: See comment below, the implicit cast is already happening, this is really about type inference based on later assignments. Which may or may not be a good idea.

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

Bắt đầu bằng cách truy vết hành vi implicit-cast và type-inference hiện có được mô tả trong issue, đặc biệt là cách các phép gán sau đó ảnh hưởng đến một khai báo biến trước đó. Xác định các quy tắc suy luận dự kiến và kiểm tra chúng bằng ví dụ phân tích dòng lệnh; công việc được hoàn tất khi đã thống nhất được hành vi và có các bài kiểm thử bao phủ kiểu được suy luận kết quả.

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.