LuaLS / LuaLS/lua-language-server
`assign-type-mismatch` warning when overloading a derived class
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?
Annotations, Type Checking, Diagnostics/Syntax Checking
### Expected Behaviour
No warning generated.
### Actual Behaviour
An `assign-type-mismatch` warning is thrown.
### Reproduction steps
```lua
---@class Parent
---@return Parent
local function newParent() local o = {}; return setmetatable(o, o) end
---@class Object : Parent
---@overload fun(s: string) -- Or disable the diagnostic on this line
local o = newParent() -- Invalid warning here
function o:__call() end
```
### Additional Notes
The overload workaround, mentioned in #1733 does not work in this use case. A function returns a type, from which a new class is created. When overloading this new class, an invalid warning is generated.
ℹ️ A workaround I've found is to make the class derive also from `table`:
```diff
- ---@class Parent
+ ---@class Parent : table
```
### 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 la advertencia del fragmento de Lua en la extensión de Visual Studio Code, centrándote en el diagnóstico `assign-type-mismatch` cuando se aplica `@overload` a una clase devuelta por una función. Rastrea el manejo de la herencia de `@class` y de los overloads, y luego verifica que la reproducción ya no emita la advertencia inválida, preservando el comportamiento documentado del workaround de `table`.
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