LuaLS / LuaLS/lua-language-server

Better global recognizing for loadfile

Aberta
#143 2 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

enhancement feat/LuaCats Annotations
Linguagem predominante
Lua
Estrelas
4.4k
Forks
442
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

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.

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece rastreando como o servidor de linguagem relata o diagnóstico undefined-global e como lida com os ambientes de load, loadfile e loadstring. Compare esse comportamento com o exemplo mainFile.lua e secondFile.lua e, em seguida, determine se o reconhecimento do ambiente ou uma anotação @global é o escopo pretendido. Considera-se concluído quando o exemplo não relatar mais foo como indefinido com o comportamento escolhido.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
lua
Domínio
devtools
Tipo de issue
Funcionalidade
Dificuldade
4/5
Tempo estimado
3-5 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
25/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.