LuaLS / LuaLS/lua-language-server
Better global recognizing for loadfile
Personne n'a encore pris cette issue.
- Langage dominant
- Lua
- Étoiles
- 4.4k
- Forks
- 442
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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
```lua
local env = setmetatable(
{foo = function(a, b) return a == b end},
{__index = _G}
)
loadfile('./secondFile.lua', 't', env)
```
*secondFile.lua
```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.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par suivre la manière dont le serveur de langage signale le diagnostic `undefined-global` et dont il gère les environnements de `load`, `loadfile` et `loadstring`. Comparez ce comportement avec l’exemple `mainFile.lua` et `secondFile.lua`, puis déterminez si la reconnaissance de l’environnement ou une annotation `@global` constitue la portée prévue. Le travail est terminé lorsque l’exemple ne signale plus `foo` comme indéfini avec le comportement choisi.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- lua
- Domaine
- devtools
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100