table newindex shows invalid `need check for nil` warning if key is `false`
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Comece com a reprodução em Lua na issue e rastreie o caminho de verificação de tipos para operações de table newindex quando a chave for false em vez de nil. Examine também os exemplos de cast relatados e, em seguida, verifique se chaves válidas com valor false não produzem mais o aviso, enquanto chaves genuinamente nil continuam produzindo-o.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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 warning
Additional 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]
end
I'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
end
Log File
No response
- Linguagem predominante
- Lua
- Estrelas
- 4.4k
- Forks
- 442
- Merge médio
- 8d 9h
- PRs com merge (30d)
- 1
Preparar o ambiente
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de LuaLS/lua-language-server
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
LuaLS/lua-language-server#1776 ·
-
泛型for迭代器的类型推导漏掉了带__call的类Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 65/100
LuaLS/lua-language-server#3463 · 5 comentários ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
LuaLS/lua-language-server#3461 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
LuaLS/lua-language-server#3460 · 1 comentário · 1 reação ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
LuaLS/lua-language-server#3459 · 1 reação ·
Todas as issues de LuaLS/lua-language-server
Issues semelhantes
-
Bug Forever Module - Quest Needs testing/reproduction
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
codymikol/multiverse.nvim#330 ·
Mantenedores costumam responder em até 8 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
-
Mosquito needs triage
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 91/100
DCS-Skunkworks/dcs-bios#1919 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
Mudlet/Mudlet#11182 · 2 comentários ·
Mantenedores costumam responder em até 1 dia