LuaLS / LuaLS/lua-language-server

---@class with function return question

Offen
#2,602 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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:
p1
but the problem is, that if I use ---@class b here, then it will ignore what the function returns and I get this:
p2
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:
p3
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.