LuaLS / LuaLS/lua-language-server
Defining optional globals doesn't trigger nil check warning
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?
Windows
### What is the issue affecting?
Type Checking
### Expected Behaviour
I have some code that runs in different environments that have different global variables available.
For example, environment1 may have a global table C_GameRules available with a function in it. environment2 does not have the global available.
I'm trying to write a meta file that makes this optional nature of this global available:
```
---@meta
---@type table?
C_GameRules = nil
---@return boolean
function C_GameRules.IsHardcoreActive() end
```
I've also tried to define a class, no change in behavior
### Actual Behaviour
`C_GameRules.IsHardcoreActive()` does not trigger a need-nil-check warning, but the type of C_GameRules gets shown as `table?`
### Reproduction steps
see above
### Additional Notes
i don't want the inner field as nilable, environment 1 has "C_GameRules" as global available and the function is guaranteed to be in there, environment 2 has the global set to nil
### 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
Riproduci il report nella Visual Studio Code Extension usando la dichiarazione del meta-file Lua mostrata e analizza le diagnosi del controllo dei tipi per C_GameRules.IsHardcoreActive(). Il lavoro è completato quando un elemento globale opzionale produce un avviso di controllo di nil, mentre la sua funzione interna rimane non nullable.
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
- 45/100