LuaLS / LuaLS/lua-language-server
Table literals aren't properly checked for field injections and missing fields
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
How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
Linux
What is the issue affecting?
Type Checking
Expected Behaviour
I'd expect tables created in the return statement to check for missing fields, and those created outside of them to check for injected fields.
Actual Behaviour
There are no warnings emitted for the attached code.
Reproduction steps
Code to reproduce the issue:
---@class Tile
---@field name string
local Tile = {}
---@return Tile
function Tile.new()
---@type Tile
local d = {
name = 'abc',
f = 10 -- No warning when a field is being injected
}
return {
f = 10 -- No warning even though there's a missing field and a field is being injected
}
end
Note that it won't produce any warnings, regardless of configuration (as far as I can tell).
Additional Notes
No response
Log File
No response
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 percorso di controllo dei tipi Lua per l’esempio Tile riprodotto ed esamina come vengono validati i letterali di tabella nelle istruzioni return e nelle variabili locali tipizzate. Riproduci il problema nell’estensione VS Code, quindi verifica che i campi iniettati producano avvisi e che la tabella restituita segnali sia il campo name mancante sia il campo f aggiuntivo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- lua
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100