LuaLS / LuaLS/lua-language-server

Annotations with mixins?

Abierto
#1,860 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

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

Descripción

Hi I'm trying to make annotations that must require the user to have certain fields in a table as a requirement.

For instance, I want a table that needs to have x,y fields, or certain functions.

Here is some pseudo-code that might explain what I mean:

---@class Spinnable
---@field spin fun()

---@class Positionable
---@field x number
---@field y number
---@field setPos fun(x: number, y: number)

---@generic T : Spinnable, Positionable
---@param p1 `T`
---@return T
local function doFunction(p1) return p1 end

local entity = { x = 5 }          -- A table that is missing the other fields
local check = doFunction(entity) -- I want a warning here saying it doesn't have, `y`, `setPos()`, or `spin()`

Is this currently possible to require certain fields in a table?

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

Empieza reproduciendo el pseudocódigo anotado del issue y revisa cómo el language server gestiona las anotaciones de clases, los genéricos y las comprobaciones de campos de tablas. La tarea estará completada cuando una tabla a la que le falte y, setPos o spin produzca un diagnóstico al pasarla a doFunction, mientras que una tabla compatible sea aceptada.

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

Evaluación

Stack tecnológico
lua
Área
devtools
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.