LuaLS / LuaLS/lua-language-server
[Feature request] Annotation for referring to superclass
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
I'm trying to add annotations to [classic](https://github.com/rxi/classic/blob/master/classic.lua), but encounter a few problems when doing so.
For example, the `super` field refers to the superclass. If I were to annotate super like this
```lua
---@class Object
---@field protected super Object
```
then subclasses will have a `super` field, but it will always refer to `Object`, instead of their superclass. The best solution I can come up with the current implementation is to set the `super` field each time a class is created.
```lua
---@class Animal : Object
---@field super Object
local Animal = Object:extend()
---@class Bird : Animal
---@field super Animal
local Bird = Object:extend()
```
This is a repetition of steps, which tells me DRY. I suggest something like a `super` annotation, which always refers to the superclass relative to which class it is being used.
```lua
---@class Object
---@field protected super super
---@class Animal : Object
local Animal = Object:extend()
-- Animal.super refers to Object
---@class Bird: Object
local Bird = Animal:extend()
-- Bird.super refers to Animal
```
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 revisando los ejemplos de anotaciones y el modelo de herencia de classic.lua mencionados en el issue. Determina dónde se resuelven las anotaciones de campos de clase y define cómo debería comportarse una anotación relativa a la superclase para Object, Animal y Bird; el issue no menciona archivos ni pruebas de LuaLS, por lo que es necesario establecer los criterios de finalización antes de la implementación.
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