Problem with methods of generic classes
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- lua
- Área
- developer-experience, devtools
Línea de trabajo
Reproduce el ejemplo de herencia genérica de Foo del issue en la extensión de Visual Studio Code e inspecciona service.log para ver los diagnósticos de comprobación de tipos. Rastrea cómo los métodos heredados sustituyen los tipos de retorno genéricos y, después, verifica que get() se resuelva como string y boolean para Example2 y Example3 sin introducir advertencias incorrectas.
Escrito por el modelo de indexación a partir del texto del issue.
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, Annotations
Expected Behaviour
- Define a generic base class Foo with a method function which returns the generic type
- Inherit from the base class and specify the generic type
- Use the method and expect the specified generic type on the output
---@class Foo<T>
---@field myValue T
local base = {}
---@return T
function base:get()
return self.myValue
end
---@type Foo<number>
local ex1 = base --Use class directly
---@class Example2 : Foo<string>
local ex2 = ex1 --Start with a version with generic type specified
---@class Example3 : Foo<boolean>
local ex3 = base --Start with a version without the generic type specified
local I = ex1.myValue --Correct: number
local a = ex1:get() --Correct: number
local II = ex2.myValue --Correct: string
local b = ex2:get() --Correct: string
local III = ex3.myValue --Correct: boolean
local c = ex3:get() --Correct: boolean
Actual Behaviour
Attempting to expand the parent class directly displays a warning, (Example 3) but using a variable with specified type does not (Example 2).
The method defined in the parent class fails to infer the generic type from the child classes
---@class Foo<T>
---@field myValue T
local base = {}
---@return T
function base:get()
return self.myValue
end
---@type Foo<number>
local ex1 = base
---@class Example2 : Foo<string>
local ex2 = ex1
---@class Example3 : Foo<boolean>
local ex3 = base --Cannot assign 'Foo' to 'Example3'
local I = ex1.myValue --Correct: number
local a = ex1:get() --Correct: number
local II = ex2.myValue --Correct: string
local b = ex2:get() --Incorrect: T
local III = ex3.myValue --Correct: boolean
local c = ex3:get() --Incorrect: T
Reproduction steps
- Define a generic base class with a method function which returns the generic type
- Inherit from the base class and specify the generic type
- Use the method and expect the specified generic type on the output
Additional Notes
No response
Log File
- Lenguaje dominante
- Lua
- Estrellas
- 4.4k
- Forks
- 442
- Merge medio
- 8 d 9 h
- PR fusionados (30 d)
- 1
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.
Más de LuaLS/lua-language-server
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
LuaLS/lua-language-server#1776 ·
-
泛型for迭代器的类型推导漏掉了带__call的类 Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
LuaLS/lua-language-server#3463 · 5 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
LuaLS/lua-language-server#3461 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
LuaLS/lua-language-server#3460 · 1 comentario · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
LuaLS/lua-language-server#3459 · 1 reacción ·
Todos los issues de LuaLS/lua-language-server
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
LandSandBoat/server#11579 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
ArchiveTeam/sinavideo-grab#7 · 3 reacciones ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
mailcow/mailcow-dockerized#7480 ·
-
Mapper: a failed area image export crashes Mudlet if the profile closed while it was running Abiertomapper bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100