LuaLS / LuaLS/lua-language-server
---@template<class: T1, class: T2>
Abierto
Nadie ha tomado este issue todavía.
enhancement
feat/generic
- Lenguaje dominante
- Lua
- Estrellas
- 4.4k
- Forks
- 442
- Métricas de merge de PR
- Sin PR fusionados en 30 d
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?
Other
Expected Behaviour



Actual Behaviour



Reproduction steps
Is it possible to implement this annotation method?
---@diagnostic disable: missing-return
function CreateFramePool(...) end
function CreateFrame(...) end
---@template <class T>
---@class ObjectPoolMixin
---@field creationFunc fun(self: self)
---@field resetterFunc fun(self: self, object: T)
---@field activeObjects T[]
---@field inactiveObjects T[]
---@field hashinactiveObjects T[]
---@field numActiveObjects integer
ObjectPoolMixin = {};
---@template <class T>
---@param creationFunc fun(self: T)
---@param resetterFunc fun(self: self, object: T)
function ObjectPoolMixin:OnLoad(creationFunc, resetterFunc) end
---@template <class T>
---@return T object
---@return boolean isNew
function ObjectPoolMixin:Acquire() end
---@template <class T1, class T2>
---@class FramePoolMixin: ObjectPoolMixin<T2>
---@field parent T1
FramePoolMixin = {};
---@class Button1
---@field a table
---@field b integer
local Button1 = {};
---@class Button2
---@field c string
---@field d number
local Button2 = {};
---@class Frame1
local frame1 = CreateFrame("Frame");
---@class Frame2
local frame2 = CreateFrame("Frame");
---@class Frame1Pool: FramePoolMixin<Frame1, Button1>
frame1.pool = CreateFramePool("Button", frame1);
---@class Frame2Pool: FramePoolMixin<Frame2, Button2>
frame2.pool = CreateFramePool("Button", frame2);
local parent1 = frame1.pool.parent; -- Should be defined as Frame1
local parent2 = frame2.pool.parent; -- Should be defined as Frame2
local activeObjects1 = frame1.pool.activeObjects; -- Should be defined as Button1[]
local activeObjects2 = frame2.pool.activeObjects; -- Should be defined as Button2[]
local button1 = activeObjects1[1]; -- Should be defined as Button1 or nil
local button2 = activeObjects2[1]; -- Should be defined as Button2 or nil
Additional Notes
No response
Log File
No response
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.
Línea de trabajo
Comienza con la reproducción en Lua del issue, centrándote en las anotaciones de herencia @template y @class y en los tipos esperados para parent y activeObjects. Rastrea cómo interpreta actualmente el servidor de lenguaje estas anotaciones y verifica después que el ejemplo conserva ambos parámetros de plantilla y resuelve los campos mostrados como Frame1/Frame2 y Button1[]/Button2[].
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
- 35/100