LuaLS / LuaLS/lua-language-server

Cannot inherit generic classes (including tables)

Offen
#3,271 1 Kommentar 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

Hello, I apologize for bringing yet another generics issue as I know it takes time for it to be made solid... Thanks for looking into my problem. I use the following code to extend the number[] class, but then the elements are not marked as numbers for a non literal object.

---@class NumberTable: number[]

---@param t NumberTable
---@return number|nil
function FirstElement(t)
  local n = t[1] -- marked as unknown
  return n
end

---@param t number[]
---@return number|nil
function FirstElementBis(t)
  local n = t[1] -- marked as number
  return n
end

I would expect t[1] to be marked as number. I also tried replacing number[] with table<number> and table<number, number> without success. Thank you!

(I use LuaLS on Neovim on Linux)

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

Reproduziere das Problem in LuaLS mit den bereitgestellten NumberTable- und FirstElement-Annotationen unter Verwendung von Neovim auf Linux wie beschrieben. Vergleiche den inferierten Typ von t[1] mit dem direkten Fall number[] und den Varianten von table. Als erledigt gilt die Aufgabe, wenn geerbte generische und Tabellen-Annotationen das Element konsistent als number identifizieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
lua, neovim
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

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