LuaLS / LuaLS/lua-language-server
Annotations with 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
Hi I'm trying to make annotations that must require the user to have certain fields in a table as a requirement.
For instance, I want a table that needs to have x,y fields, or certain functions.
Here is some pseudo-code that might explain what I mean:
---@class Spinnable
---@field spin fun()
---@class Positionable
---@field x number
---@field y number
---@field setPos fun(x: number, y: number)
---@generic T : Spinnable, Positionable
---@param p1 `T`
---@return T
local function doFunction(p1) return p1 end
local entity = { x = 5 } -- A table that is missing the other fields
local check = doFunction(entity) -- I want a warning here saying it doesn't have, `y`, `setPos()`, or `spin()`
Is this currently possible to require certain fields in a table?
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 damit, den annotierten Pseudo-Code aus dem Issue zu reproduzieren, und prüfe, wie der language server Klassenannotationen, Generics und Prüfungen von Tabellenfeldern behandelt. Die Aufgabe ist abgeschlossen, wenn eine Tabelle, der y, setPos oder spin fehlt, beim Übergeben an doFunction eine Diagnose erzeugt, während eine kompatible Tabelle akzeptiert wird.
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
- 25/100