Class generics produce unusable and wrong union types
まだ誰も着手していません。
評価
調査の方向性
lua-language-serverをインストールした状態でVS CodeのLuaスニペットを分析し、Stack.NewとPeek、Pop、Pushメソッドの補完ヒントに重点を置いて問題を再現します。a、b、cの推論された型を、期待される非ユニオン型のメソッドヒントと比較します。メソッドに使用できない、または不要なユニオン型や、余分なジェネリックプレースホルダーが表示されなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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
- 主要言語
- Lua
- スター
- 4.4k
- フォーク
- 442
- 平均マージ
- 8日 9時間
- マージ済み PR(30日)
- 1
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
LuaLS/lua-language-server のほかの issue
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
LuaLS/lua-language-server#1776 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 65/100
LuaLS/lua-language-server#3463 · コメント 5 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
LuaLS/lua-language-server#3461 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
LuaLS/lua-language-server#3460 · コメント 1 件 · リアクション 1 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
LuaLS/lua-language-server#3459 · リアクション 1 件 ·
LuaLS/lua-language-server の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
HenrikBengtsson/CBI-software#134 ·
-
Nmap
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
secondlife/slua#96 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100