LuaLS / LuaLS/lua-language-server

Returning generics with `T<X, Y>`

Abierto
#1,000 2 comentarios 5 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

enhancement feat/generic feat/LuaCats Annotations
Lenguaje dominante
Lua
Estrellas
4.4k
Forks
442
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Below, I have a generic list that uses fluid interface to return itself for some methods:

```lua
--- @class List
local List = {}

--- @generic T : List, V, _
--- @param self T
--- @param value V # Element value to insert
--- @return T # Returning itself (a generic)
function List:insert(value)
return self -- Returning itself (a generic)
end

-- test
---@type List
local mylist

local testingType = mylist:insert(1)
-- ^ Testing type is not `List` but literally `T`
```
![image](https://user-images.githubusercontent.com/79615454/160072316-05c72703-ed48-4625-a883-67bb267be5de.png)

**Expected behavior**
testingType is of type `List`

I am thinking that this case could be something to look at for the 3.0 update.

(Edit: perfect #1000th issue...)

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

El payload no menciona ningún archivo fuente ni ninguna prueba. Empieza reproduciendo el ejemplo proporcionado de List:insert y compara el tipo inferido con el esperado List; después, sigue la inferencia del tipo de retorno genérico y añade una prueba de regresión que confirme que el resultado ya no es el literal T.

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
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.