LuaLS / LuaLS/lua-language-server
---@class with function return question
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Lua
- Sterne
- 4.4k
- Forks
- 442
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
so I have this (as a mockup):
do
---@class a
local a = {}
---@generic T
---@param self a
---@param new T
---@return T
a.extend = function(self, new)
--...
return new
end
end
and it's supposed to be inheritance for prototypes, right, but I'm trying to make the LS think that it returns the second parameter new and it does that and the LS thinks that, so far so good. So this
local b = a:extend{
n = 1
}
will make it like this:
but the problem is, that if I use ---@class b here, then it will ignore what the function returns and I get this:
am I missing something or is it just not possible? Though, if I separate it into two statements like this,
---@class b
local b = {
n = 1
}
b = a:extend(b)
then I get what I want:
but it's not ideal, since it's two statements now and I can't use the fun{} syntactic sugar this way, which would be the whole reason, right. Is there a way to make it work? Also I'm unsure about how to properly word the title here
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
Es werden keine Quelldateien oder Tests genannt. Reproduziere die beiden einzeiligen und die beiden zweizeiligen Lua-Snippets und verfolge anschließend die LuaLS-Typinferenz für lokale Deklarationen, Klassenannotationen, Generics und Funktionsrückgabewerte. Als erledigt gilt die Aufgabe, wenn das unterstützte Verhalten implementiert und durch einen Regressionstest abgedeckt ist oder die Einschränkung eindeutig dokumentiert wurde.
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
- 35/100