LuaLS / LuaLS/lua-language-server
泛型类的成员函数通过@param注解的类泛型参数无法与调用时传入的实参正确匹配
Personne n'a encore pris cette issue.
- Langage dominant
- Lua
- Étoiles
- 4.4k
- Forks
- 442
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire les diagnostics de l’exemple Lua fourni via l’extension Visual Studio Code, en comparant la méthode déclarée avec des annotations @param à la fonction @field équivalente. Suivez la correspondance des types génériques utilisée pour stringBox.combine ; le travail est terminé lorsque les deux arguments ne produisent plus de diagnostics, tandis que combine2 continue d’être correctement géré.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- lua
- Domaine
- devtools
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100