LuaLS / LuaLS/lua-language-server
`---@cast` annotation doesn't respect scope rules
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
The ---@cast annotation should respect Lua scoping rules.
Actual Behaviour
Let's consider:
--- @class foo
--- @field a number
--- @class bar
--- @field b string
--- @type { [integer]: foo|bar }
local array = {}
for i, instance in ipairs(array) do
if instance.a then
-- First if block
--- @cast instance foo
end
if instance.b then
-- Second if block
end
end
In the first if block, we cast the instance to the foo type. When hovering over the instance variable in the second if block we can see its type is foo. It would be expected for its type to be bar since the ---@cast happened in different scope.
Reproduction steps
- Copy-paste the given example code into your text editor.
- Hover over the
instancevariable in the second if block. - See the error in the popup.
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
Comienza reproduciendo el problema con el ejemplo de Lua proporcionado en la extensión de Visual Studio Code e inspecciona cómo la comprobación de tipos gestiona los ámbitos de los dos bloques if. Se considera completado cuando el cast a foo se aplica solo dentro del primer bloque, mientras que la instancia del segundo bloque conserva el tipo inferido apropiado en lugar de foo.
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
- Bien especificado
- Aptitud para principiantes
- 42/100