LuaLS / LuaLS/lua-language-server

[Feature Request] @mixin - @class specific syntax to define applied mixins

Aperta
#2,618 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Lua
Stelle
4.4k
Fork
442
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

# 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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Non vengono indicati file o test. Inizia tracciando il modo in cui il language server analizza le annotazioni @class esistenti e l’ereditarietà, quindi determina dove si inserirebbero l’applicazione ordinata di @mixin e la sovrascrittura dei campi. Il lavoro è completo quando la sintassi viene analizzata con le regole di precedenza indicate ed è coperta da test per più mixin e collisioni.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
lua
Ambito
devtools
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.