LuaLS / LuaLS/lua-language-server
Casting an otherwise unused variable in a block preserves the cast outside of block
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?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
Windows
What is the issue affecting?
Type Checking
Expected Behaviour
Any casts inside a block should not be maintained once leaving that block.
Actual Behaviour
Type cast is maintained even after the block in which the variable was cast if and only if the variable was not used in that block.
Reproduction steps
This is incorrect:
---@type number|string
local i
if true then --can be `false` or any other logical
---@cast i number
local _ = 0 --not referencing variable `i` that was cast above
end
local j = i --type of j is `number`, should be `number|string`
This is correct:
---@type number|string
local i
if true then --can be `false` or any other logical
---@cast i number
local _ = i -- referencing variable `i` that was cast above
end
local j = i --type of j is `number|string`
Additional Notes
No response
Log File
No response
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce ambos fragmentos de Lua mediante la extensión de Visual Studio Code y compara el tipo inferido de j después del bloque. Sigue la ruta de comprobación de tipos para el manejo de @cast cuando la variable del cast no se utiliza y, después, verifica que el cast no sobreviva al bloque, mientras que el caso con una referencia dentro del bloque siga siendo correcto.
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
- 45/100