LuaLS / LuaLS/lua-language-server

[Feature request] Annotation for referring to superclass

Offen
#2,490 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

I'm trying to add annotations to classic, but encounter a few problems when doing so.

For example, the super field refers to the superclass. If I were to annotate super like this

---@class Object
---@field protected super Object

then subclasses will have a super field, but it will always refer to Object, instead of their superclass. The best solution I can come up with the current implementation is to set the super field each time a class is created.

---@class Animal : Object
---@field super Object
local Animal = Object:extend()

---@class Bird : Animal
---@field super Animal
local Bird = Object:extend()

This is a repetition of steps, which tells me DRY. I suggest something like a super annotation, which always refers to the superclass relative to which class it is being used.

---@class Object
---@field protected super super

---@class Animal : Object
local Animal = Object:extend()
-- Animal.super refers to Object

---@class Bird: Object
local Bird = Animal:extend()
-- Bird.super refers to Animal

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

Beginne mit der Durchsicht der im Issue referenzierten Annotationsbeispiele und des Vererbungsmodells von classic.lua. Ermittle, wo Annotationen für Klassenfelder aufgelöst werden, und definiere, wie sich eine Annotation relativ zur Oberklasse für Object, Animal und Bird verhalten soll; im Issue werden keine LuaLS-Dateien oder Tests genannt, daher müssen die Abschlusskriterien vor der Implementierung festgelegt werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
lua
Bereich
devtools
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
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.