Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

泛型类的成员函数通过@param注解的类泛型参数无法与调用时传入的实参正确匹配

オープン
#3,398 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
静か
技術スタック
lua
領域
devtools

調査の方向性

まず、提供された 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却能正常识别实参

Image
Reproduction steps
  1. 复制我提供的复现代码,检查诊断结果
Additional Notes

No response

Log File

No response

主要言語
Lua
スター
4.4k
フォーク
442
平均マージ
8日 9時間
マージ済み PR(30日)
1

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

LuaLS/lua-language-server のほかの issue

LuaLS/lua-language-server の issue をすべて見る

似ている issue

Lua の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。