LuaLS / LuaLS/lua-language-server
Better global recognizing for loadfile
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
In some cases you might need to make the plugin recognize a specific local variable as global, without declaring that variable as an actual global, one of these cases are using load and loadfile were you can pass an env variable that represents the chunk environment.
*mainFile.lua
local env = setmetatable(
{foo = function(a, b) return a == b end},
{__index = _G}
)
loadfile('./secondFile.lua', 't', env)
*secondFile.lua
foo(1, 2) -- Undefined global `foo` . Lua Diagnostics.(undefined-global)
So i would suggest better recognizing for load/loadfile/loadstring environment or/and a custom emmylua annotations --- @global that marks the local var as a global one.
Thanks in advance.
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 tracciando il modo in cui il server del linguaggio segnala la diagnostica undefined-global e gestisce gli ambienti di load, loadfile e loadstring. Confronta questo comportamento con l’esempio mainFile.lua e secondFile.lua, quindi determina se il riconoscimento dell’ambiente o un’annotazione @global costituisce l’ambito previsto. Il lavoro è completato quando l’esempio non segnala più foo come non definito con il comportamento scelto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- lua
- Ambito
- devtools
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 25/100