泛型类的成员函数通过@param注解的类泛型参数无法与调用时传入的实参正确匹配
まだ誰も着手していません。
評価
調査の方向性
まず、提供された Lua の例で発生する診断を Visual Studio Code 拡張機能を通じて再現し、@param アノテーションで宣言されたメソッドと、対応する @field 関数を比較します。stringBox.combine に使用されているジェネリック型のマッチングを追跡します。両方の引数で診断が発生しなくなり、combine2 が引き続き正しく処理されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
Windows
What is the issue affecting?
Diagnostics/Syntax Checking
Expected Behaviour
如题,下面的 stringBox.combine(text, "true") 应该不会显示任何诊断问题:
---@generic T
---@class Box<T>
---@field storedValue T
---@field combine2 fun(first: T, second: T): T
local Box = {}
---@param first T
---@param second T
---@return T
function Box.combine(first, second) end
---@type Box<string>
local stringBox
local text = "123"
local r1 = stringBox.combine(text, "true")
local r2 = stringBox.combine2(text, "true")
Actual Behaviour
stringBox.combine(text, "true") 的两个参数均被诊断为:
Cannot assign `string` to parameter `T`.
- `string` cannot match `T`
- Type `string` cannot match `T`
而用@field声明的同类型函数combine2却能正常识别实参
Reproduction steps
- 复制我提供的复现代码,检查诊断结果
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
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
LandSandBoat/server#11579 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
ArchiveTeam/sinavideo-grab#7 · リアクション 3 件 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
mailcow/mailcow-dockerized#7480 ·
-
mapper bug
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100