LuaLS / LuaLS/lua-language-server
Generics, inheritance and an overloaded constructor
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
**VisualStudio Code** on Windows, **lua-language-server v3.7.4** (_Last updated 2024-01-07, 10:29:54_)
The following error occurs only when a **generic** inherits from a type containing an overloaded constructor.

```lua
local e = Entity()
e:get(Transform2)
e:get(Transform)
```
The only difference between `Transform` and `Transform2` is the overloaded constructor.
I could "workaround" this issue by removing `: ComponentBase` from the function `Entity:get` ... but I want to check whether the given component `type` is valid.
---
Here is the simplified annotation file:
```lua
---@class ComponentBase
---@class Transform: ComponentBase
Transform = {}
---@class Transform2: ComponentBase
---@overload fun(x: number, y: number): Transform2
Transform2 = {}
---@class Entity
---@overload fun(): Entity
Entity = {}
---@generic T: ComponentBase
---@param type T
---@return T
function Entity:get(type) end
```
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con il file di annotazioni semplificato nell'issue e riproduci la diagnostica in Visual Studio Code su Windows usando lua-language-server v3.7.4. Confronta le chiamate generiche a Entity:get per Transform e Transform2, quindi verifica che i tipi di componenti validi siano gestiti in modo coerente senza l'errore segnalato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- lua
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100