LuaLS / LuaLS/lua-language-server

Cannot inherit generic classes (including tables)

Abierto
#3,271 1 comentario 0 reacciones 0 asignados Ver en GitHub

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

Hello, I apologize for bringing yet another generics issue as I know it takes time for it to be made solid... Thanks for looking into my problem. I use the following code to extend the number[] class, but then the elements are not marked as numbers for a non literal object.

---@class NumberTable: number[]

---@param t NumberTable
---@return number|nil
function FirstElement(t)
  local n = t[1] -- marked as unknown
  return n
end

---@param t number[]
---@return number|nil
function FirstElementBis(t)
  local n = t[1] -- marked as number
  return n
end

I would expect t[1] to be marked as number. I also tried replacing number[] with table<number> and table<number, number> without success. Thank you!

(I use LuaLS on Neovim on Linux)

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

Reproduce el problema en LuaLS con las anotaciones NumberTable y FirstElement proporcionadas, usando Neovim en Linux tal como se describe. Compara el tipo inferido de t[1] con el caso directo number[] y las variantes de table. Se considera terminado cuando las anotaciones genéricas y de tabla heredadas identifican de forma coherente el elemento como number.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
lua, neovim
Área
devtools
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.