LuaLS / LuaLS/lua-language-server

Function overloading by declaring multiple functions with same name appears to be completely broken

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

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

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

説明

How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

Which OS are you using?

MacOS

What is the issue affecting?

Annotations, Type Checking

Expected Behaviour

Given:

---@meta

---@param stringParam string
function DoSomething(stringParam) end

---@param intParam1 integer
---@param intParam2 integer
function DoSomething(intParam1, intParam2) end

DoSomething("test")

I would expect DoSomething("test") to pass typechecking, because it meets the first definition of DoSomething (a single string parameter).

Actual Behaviour

Typechecking fails with "This function requires 2 argument(s) but instead it is receiving 1. (missing-parameter)"

Reproduction steps
  1. Paste the above code into a file
  2. Hover over the last line (DoSomething("test"))
  3. See error
Additional Notes

This issue does not apply to the use of @overload for functions. This passes typechecking:

---@meta

---@param stringParam string
---@overload fun(intParam1: integer, intParam2: integer)
function DoSomething(stringParam) end

DoSomething("test")
Log File

No response

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

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

はじめの一歩

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

調査の方向性

まず、報告にある最小限の Lua スニペットで問題を再現し、動作する @overload の例と比較します。次に、関数宣言の繰り返しとオーバーロード解決に関する型チェックの経路を追跡し、その後、1 引数の呼び出しが通る一方で、2 引数の呼び出しも引き続き有効であることを確認します。

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

評価

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

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

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