LuaLS / LuaLS/lua-language-server
`assign-type-mismatch` warning when overloading a derived class
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Lua
- Sterne
- 4.4k
- Forks
- 442
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
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?
Annotations, Type Checking, Diagnostics/Syntax Checking
Expected Behaviour
No warning generated.
Actual Behaviour
An assign-type-mismatch warning is thrown.
Reproduction steps
---@class Parent
---@return Parent
local function newParent() local o = {}; return setmetatable(o, o) end
---@class Object : Parent
---@overload fun(s: string) -- Or disable the diagnostic on this line
local o = newParent() -- Invalid warning here
function o:__call() end
Additional Notes
The overload workaround, mentioned in #1733 does not work in this use case. A function returns a type, from which a new class is created. When overloading this new class, an invalid warning is generated.
ℹ️ A workaround I've found is to make the class derive also from table:
- ---@class Parent
+ ---@class Parent : table
Log File
No response
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere die Warnung aus dem Lua-Snippet in der Visual Studio Code-Erweiterung und konzentriere dich auf die Diagnose assign-type-mismatch, wenn @overload auf eine von einer Funktion zurückgegebene Klasse angewendet wird. Verfolge die Verarbeitung der @class-Vererbung und von Overloads und überprüfe anschließend, dass die Reproduktion die ungültige Warnung nicht mehr ausgibt, während das dokumentierte table-Workaround-Verhalten erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- lua
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100