LuaLS / LuaLS/lua-language-server

Nil access check does not run

Ouverte
#2,930 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

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

How are you using the lua-language-server?

Other

Which OS are you using?

Linux

What is the issue affecting?

Diagnostics/Syntax Checking

Expected Behaviour

I have the minimal example

---@class A
---@field b fun(self: A): table?

---@return A[]
local function get_A()
  local l = {}
  for _ = 1, 10 do
    if math.random() > 0.5 then
      table.insert(l, { b = function(self) return { f = 4 } end })
    else
      table.insert(l, { b = function(self) print("hi" .. tostring(self)) end })
    end
  end
  return l
end

local as = get_A()
for i = 1, 10 do
  local a = as[i]
  if a:b().f > 3 then
    print("yo")
  end
end

The lsp should give me an error about a:b().f as a:b() could be nil.

Actual Behaviour

No warnings are shown.

Reproduction steps
  1. Copy the given code into an editor
  2. See that no errors are shown
Additional Notes

No response

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

Commencez par exécuter l’exemple Lua minimal dans un éditeur avec lua-language-server et confirmez qu’aucun diagnostic n’est émis pour a:b().f. Suivez le chemin des diagnostics/de la vérification syntaxique pour les appels chaînés et les valeurs de retour nullable. Le travail est terminé lorsque l’exemple indique que le déréférencement de a:b() peut accéder à une valeur nil, sans introduire d’avertissements sans rapport.

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
52/100

Recevez les nouvelles issues par e-mail

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