LuaLS / LuaLS/lua-language-server
[Feature request] Annotation for referring to superclass
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
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
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