LuaLS / LuaLS/lua-language-server
`@overload` return union unexpected behaviour
Ouverte
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?
NeoVim
Which OS are you using?
Windows
What is the issue affecting?
Type Checking, Diagnostics/Syntax Checking
Expected Behaviour
Type of r1 = EA|0
Not warning: probably nil
Actual Behaviour
Type of r1 = integer|EA|0
Warning: probably nil
Reproduction steps
- Create file
test.lua - Fill
---@enum EA
local EA = {
a = 1,
b = 2,
}
local ab = 0
---@overload fun(): 0
---@overload fun(): EA, [string]
local function fua()
if ab == 0 then
return 0
else
return EA[ab] or EA.a, { "aa" }
end
end
local r1, r2 = fua()
if r1 == 0 then
print(0)
else
print(r2[1])
end
- See type of
r1 - See
Need check nilat line 22
Additional Notes
Maybe duplicate of #1456
Log File
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 reproduire le rapport dans test.lua avec l’exemple @overload fourni et examinez les types inférés ainsi que le diagnostic à la ligne 22. C’est terminé lorsque r1 est inféré comme EA|0 et que l’avertissement concernant nil n’est plus signalé pour le flux de contrôle présenté.
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é
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100