LuaLS / LuaLS/lua-language-server

Type narrowing breaks on equivalence to false.

Ouverte
#3,287 0 commentaires 0 réactions 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?

Visual Studio Code Extension (sumneko.lua)

Which OS are you using?

Windows

What is the issue affecting?

Type Checking

Expected Behaviour

When x is a boolean, if x == false then should identify x as false in its true block, and true in its false block.

Actual Behaviour

In the true block, x is identified as true, and in the false block, x is identified as boolean.

Reproduction steps
  1. Paste this code into the editor
local x ---@type boolean

if x == false then
	local y = x
	-- y is type `true`, should be type `false`
else
	local y = x
	-- y is type 'boolean', should be type 'true'
end
  1. Hover over y to inspect its type.
Additional Notes

This doesn't just happen with boolean types. It can happen to any type that can be false, such as integer|false|nil.

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 dans l’extension Visual Studio Code à l’aide de l’extrait Lua et survolez y dans les deux branches. Suivez le comportement de la vérification de type pour x == false, puis vérifiez que la branche true se résout en false et la branche false en true, y compris pour des unions telles que integer|false|nil.

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

Recevez les nouvelles issues par e-mail

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