LuaLS / LuaLS/lua-language-server

table newindex shows invalid `need check for nil` warning if key is `false`

Abierto
#3,359 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Lua
Estrellas
4.4k
Forks
442
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con la reproducción en Lua del issue y sigue el flujo de comprobación de tipos para las operaciones de table newindex cuando la clave es false en lugar de nil. Examina también los ejemplos de cast indicados y verifica después que las claves válidas con valor false ya no produzcan la advertencia, mientras que las claves realmente nil sí la sigan produciendo.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
lua
Área
devtools
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.