@generic 不验证类型是否一致
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
No se nombra ningún archivo fuente ni ninguna prueba. Reproduce el problema con el fragmento de Lua proporcionado e inspecciona las rutas de comprobación de tipos genéricos e inferencia del tipo de retorno; después, sigue cómo se vincula un parámetro genérico a través de varios argumentos. Se considera terminado cuando el comportamiento elegido para el mismo tipo se refleja de forma coherente en los diagnósticos y los resultados de hover, con cobertura de regresión si el proyecto tiene una ubicación de pruebas aplicable.
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
Expected Behaviour
假设有这样的代码:
---@class TestBase
---@class TestDerived1 : TestBase
---@class TestDerived2 : TestBase
---@generic T:TestBase
---@param v1 T
---@param v2 T
local function foo(v1, v2) end
我给 foo 的 v1, v2 标注了同一个 T,因此期望它们类型是一致的
local t1 ---@type TestDerived1
local t2 ---@type TestDerived2
foo(t1, t2)
这应该报错
Actual Behaviour
可实际上没有。因为泛型只对每一个参数进行独立的多态类型检查,都继承同一个父类自然没有报错。
当然,同一个泛型的一致性是完全一致还是多态一致,可以归结为一种设计考虑。当前的逻辑也许不算太坏。
但是,如果再加上返回值,结果就会变得很奇怪。
返回值同样是 T,可是却变成第一个参数的类型了!无论从哪个角度想都不合理。
Reproduction steps
复制上述代码查看悬停类型提示即可
Additional Notes
建议:
校验由 @generic 标注的同一个泛型必须是同一类型
或者:在类型不同时不要推断为第一个类型而是基类类型
Log File
No response
- 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
-
documentation feature-request mini.completion
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100