LuaLS / LuaLS/lua-language-server

Undefined global `var` in a function which has injected `var` into env

Aperta
#1,151 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

enhancement
Lingua principale
Lua
Stelle
4.4k
Fork
442
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Describe the bug
luv -v: LuaJIT 2.1.0-beta3 -- Copyright (C) 2005-2022 Mike Pall. https://luajit.org/

local A = {}

function A.sync(executor)
    local env = getfenv(executor)
    env.await = A.wait
    -- ......
    executor()
end

function A.wait(promise)
    print('go')
end

A.sync(function()
    await() -- Undefined global `await`.
end)

return A

Expected behavior
No Undefined global

If it's hard to fix, how can I trick the server into treating awati as a global variable but not become an item in completion outside the executor function.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci il report con l’esempio Lua in un language server Lua in esecuzione e analizza come l’analizzatore gestisce getfenv, i membri dell’ambiente iniettati e la diagnostica globale. Poiché nell’issue non sono indicati né un file sorgente né un test, individua prima i punti di ingresso rilevanti per l’analisi globale e il completamento. Il lavoro è completo quando await non viene segnalato come non definito all’interno dell’executor, pur rimanendo assente dal completamento al suo esterno.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
lua
Ambito
tooling
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.