-
-
Notifications
You must be signed in to change notification settings - Fork 403
Open
Description
How are you using the lua-language-server?
NeoVim
Which OS are you using?
Windows
What is the issue affecting?
Type Checking
Expected Behaviour
t[key] = {} should throw no warning if key is not nil.
Actual Behaviour
t[key] = {} throws an invalid warning if key is false but not nil.
Reproduction steps
local CACHE = {}
CACHE[false] = {} -- ok
local key = false
CACHE[key] = {} -- should be ok as well, but throws invalid warningAdditional Notes
This happened to me in a more complex method where I ensured a key is not nil, by redefining the parameter:
function apicall(input)
local key = input or false
-- more stuff...
cache[key] = {}
return cache[key]
endI'd like to note an annoyance when it comes to casting, the following casts all throw warnings, even if explicitly casting the variable, requiring me to invent a new variable (or forcing me disable redefining local):
---@param input string?
function apicall(input)
-- this cast does nothing and also throws no warning
---@cast input +false
-- this cast warns that it can't cast string? to string|false
---@cast input string|false
-- this is what I do, it just throws an info warning, which I've disabled:
---@type string | false
local input = input or false
endLog File
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels