Using LuaJIT's nil-coalescing extension does not narrow the type correctly
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 68/100
Research direction
Start by reproducing the issue in the lua-language-server type checker with the provided ?? example, then compare its inferred type with the equivalent or expression. Trace how the nil-coalescing expression handles nullable operands; done means bar is inferred as integer and the existing behavior remains correct for the comparison case.
Written by the indexing model from the issue text.
Description
How are you using the lua-language-server?
Other
Which OS are you using?
Linux
What is the issue affecting?
Type Checking
Expected Behaviour
Using the nil-coalescing operator should narrow an expressions type. For example, in this sample code, the type of b should be narrowed to integer:
---@type integer?
local foo = 1
local bar = foo ?? 2
Actual Behaviour
Instead of the type being narrowed, the type of foo is copied instead, and the type of bar is thought to be integer? instead of integer.
Reproduction steps
- Insert the following sample code in a project:
---@type integer?
local foo = 1
local bar = foo ?? 2
- Check the type of
b
Additional Notes
This seems to work fine using the classic Lua approach with or:
---@type integer?
local foo = 1
local bar = foo or 2
The type of bar is integer here, as expected.
Log File
No response
- Dominant language
- Lua
- Stars
- 4.4k
- Forks
- 442
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from LuaLS/lua-language-server
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
LuaLS/lua-language-server#1776 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
LuaLS/lua-language-server#3461 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 68/100
LuaLS/lua-language-server#3460 · 1 comment · 1 reaction ·
-
Difficulty 3/5 1-2 days Newbie friendliness 64/100
LuaLS/lua-language-server#3458 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 52/100
LuaLS/lua-language-server#3456 ·
All issues in LuaLS/lua-language-server
Similar issues
-
documentation feature-request mini.completion
Difficulty 1/5 Under an hour Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
fluent/fluent-bit-docs#2727 ·
-
OS:Windows
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
api7/lua-resty-saml#62 ·