Class generics produce unusable and wrong union types
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Tái hiện vấn đề bằng cách phân tích đoạn mã Lua trong VS Code khi đã cài đặt lua-language-server, tập trung vào các gợi ý hoàn tất cho Stack.New và các phương thức Peek, Pop và Push. So sánh các kiểu được suy luận của a, b và c với các gợi ý phương thức không phải kiểu hợp dự kiến; hoàn tất khi các phương thức không còn hiển thị các kiểu hợp không thể sử dụng hoặc không cần thiết, hay các placeholder generic thừa.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
MacOS, Windows
What is the issue affecting?
Completion
Expected Behaviour
Methods Peek,Push,Pop have proper type hints
Actual Behaviour
While types of a, b, c are correct the
type hints of methods are unusable with unnecessary union types.
If Push is removed from superclass, then type hints go to normal without unions but still with <T> in many places
local _lua_setmetatable = setmetatable
Stack = {}
--- @generic T
--- @class Stack<T> : {
--- Pop: (fun(self: Stack<T>): T),
--- Peek: (fun(self: Stack<T>): T),
--- Push: (fun(self: Stack<T>, value: T): Stack<T>),
--- }
--- @field protected _stack any[]
--- @field protected _count integer
Stack.__index = {}
--- Creates a new, empty stack.
--- @generic T
--- @return Stack<T>
function Stack.New()
local this = {
_stack = {},
_count = 0,
}
return _lua_setmetatable(this, Stack)
end
local st = Stack.New() --[[@as Stack<{ num: integer }>]]
local a = st:Peek()
local b = st:Pop()
local c = st:Push({})
Reproduction steps
Analyze specified code in VSCode with luals installed
Additional Notes
No response
Log File
No response
- Ngôn ngữ chính
- Lua
- Star
- 4.4k
- Fork
- 442
- Merge trung bình
- 8 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 1
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.
Issue khác của LuaLS/lua-language-server
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
LuaLS/lua-language-server#1776 ·
-
泛型for迭代器的类型推导漏掉了带__call的类 Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 65/100
LuaLS/lua-language-server#3463 · 5 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
LuaLS/lua-language-server#3461 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
LuaLS/lua-language-server#3460 · 1 bình luận · 1 reaction ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
LuaLS/lua-language-server#3459 · 1 reaction ·
Tất cả issue của LuaLS/lua-language-server
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
HenrikBengtsson/CBI-software#134 ·
-
Nmap
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
secondlife/slua#96 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100