LuaLS / LuaLS/lua-language-server

Error "Undefined field" on _G if global is declared by Lua.diagnostics.globals

Ouverte
#2,064 2 commentaires 2 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

enhancement
Langage dominant
Lua
Étoiles
4.4k
Forks
442
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

Which OS are you using?

Linux

What is the issue affecting?

Diagnostics/Syntax Checking

Expected Behaviour
local extract0 = bit32 and bit32.extract -- Lua 5.2/Lua 5.3 in compatibility mode
local extract = _G.bit32 and _G.bit32.extract -- Lua 5.2/Lua 5.3 in compatibility mode

Expected: No error

Actual Behaviour

Error on 2nd line:

(global) _G.bit32: unknown
Undefined field bit32.Lua Diagnostics.(undefined-field)

Reproduction steps
  1. Add 'bit32' to globals;
  2. Errors on 1st line disappeared; but errors on 2nd line persists.
Additional Notes

sumneko.lua-3.6.18-linux-x64

Real global variables does not trigger errors. Only Lua.diagnostics.globals items lead to errors.

Additional question: how to mute errors for this pattern?

if _G.bit then -- LuaJIT
    local shl, shr, band = _G.bit.lshift, _G.bit.rshift, _G.bit.band
...
end

@diagnostic disable: mute too much, but @diagnostic disable-line: mute too little.

Log File

No response

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez le problème de diagnostic dans l’extension Visual Studio Code en utilisant Lua.diagnostics.globals avec bit32, en comparant l’accès direct à l’accès via _G.bit32. Suivez le traitement des diagnostics pour les globals configurés ; le travail est terminé lorsque _G.bit32 ne signale plus de champ indéfini, tandis que les diagnostics de champs indéfinis sans rapport et le comportement de suppression au niveau de la ligne restent intacts.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
lua
Domaine
devtools
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.