LuaLS / LuaLS/lua-language-server

Generic Class: a method does not catch the type

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

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

主要言語
Lua
スター
4.4k
フォーク
442
PR マージ指標
30日以内にマージされた PR はありません

説明

---@class Map<T>
Map = {}

---@param key T
---@return any?
function Map:Find(key) end

---@param key T
---@return boolean
function Map:Contains(key) end

---@param key T
function Map:Erase(key) end

function Map:Clear() end


---@class NumberMap: Map<number>
NumberMap = {}

---@return NumberMap
function NumberMap() end
local map = NumberMap()
map:Find(1)
Image

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

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

はじめの一歩

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

調査の方向性

issue に示されている generic Map、NumberMap: Map、および map:Find(1) の宣言で診断を再現します。まず Lua language server の Generic-Class 型の伝播を追跡し、Map:Find がキー パラメーターをどのように解決するかを調べます。Find 呼び出しのチェック時に NumberMap の特殊化が適用され、結果の診断が具体的なキー型と一致すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

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

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

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