LuaLS / LuaLS/lua-language-server
[Feature Request] @mixin - @class specific syntax to define applied mixins
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Lua
- Sterne
- 4.4k
- Forks
- 442
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
# What
A way to indicate that the members of a `@class` type are applied to a subject `@class` outside of the inheritance chain
# Technical
`@mixin type, ...`
Adds the values of `type, ...` to the subject class' definition. Mixins are applied in the order they are specified; values of the same key are overwrote as each mixin is processed
### Example
This:
```lua
---@class Mixin1
---@field foo number
---@field bar number
---@class Mixin2
---@field bar string
---@field baz string
---@class Subject
---@field key boolean
---@field foo boolean
---@mixin Mixin1, Mixin2
```
Would get interpreted as
```lua
---@class Subject
---@field key boolean (defined by field; wasn't altered by mixins)
---@field foo number (defined by field, overwrote by mixin1, not overwrite by mixin2)
---@field bar string (defined by mixin1, overwrite by mixin2)
---@field baz string (defined by mixin2)
```
# Use case
I currently have sub-classes that get assigned valves from reusable dictionary tables outside their inheritance chain. The only way to document those modifications is to statically define the fields each time a mixin is applied
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 Dateien oder Tests genannt. Beginne damit nachzuverfolgen, wie der language server vorhandene @class-Annotationen und Vererbung parst, und bestimme dann, wo die geordnete Anwendung von @mixin und das Überschreiben von Feldern eingeordnet werden sollten. Als abgeschlossen gilt die Aufgabe, wenn die Syntax mit den angegebenen Vorrangregeln geparst wird und durch Tests für mehrere Mixins und Kollisionen abgedeckt ist.
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