LuaLS / LuaLS/lua-language-server

Annotations `@enum` and `@enum (key)` in JSON output

Abierto
#2,530 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

Annotations `@enum` and `@enum (key)` produce very different JSON output.

# Annotation `@enum`

```lua
---@enum level1
---Description of enum level1.
local level1 = {
low = 1, --Low level.
high = 2, --High level.
}
```
This enum creates the following JSON output:

```json
{
"defines": [
{
"file": "file:///home/andreas/Projects/Code/luals2dox/test/./enum/enum-02.lua",
"finish": 15,
"start": 9,
"type": "doc.enum"
}
],
"desc": "```lua\n{\n low: integer = 1,\n high: integer = 2,\n}\n```",
"fields": [],
"name": "level1",
"rawdesc": "```lua\n{\n low: integer = 1,\n high: integer = 2,\n}\n```",
"type": "type"
},
{
"defines": [
{
"file": "file:///home/andreas/Projects/Code/luals2dox/test/./enum/enum-02.lua",
"finish": 40007,
"start": 40003,
"type": "tablefield"
}
],
"desc": "High level.",
"fields": [],
"name": "level1.high",
"rawdesc": "High level.",
"type": "type"
},
{
"defines": [
{
"file": "file:///home/andreas/Projects/Code/luals2dox/test/./enum/enum-02.lua",
"finish": 30006,
"start": 30003,
"type": "tablefield"
}
],
"desc": "Low level.",
"fields": [],
"name": "level1.low",
"rawdesc": "Low level.",
"type": "type"
},
```

Issues:
- First block: `start` and `finish` numbers are wrong.
- Description of enum `Description of enum level1.` is missing.

Just curious:
- Why are there 3 separate blocks for this enum? I'd expected block 2 and 3 (enum items) to be sub-blocks of block 1 (enum). This would make it easier reading/postprocessing the JSON file.

# Annotation `@enum (key)`

```lua
---@enum (key) level2
---Description of enum level2.
local level2 = {
low = 1, --Low level.
high = 2, --High level.
}
```
This enum create the following JSON output:

```json
{
"defines": [
{
"file": "file:///home/andreas/Projects/Code/luals2dox/test/./enum/enum-02.lua",
"finish": 70021,
"start": 70015,
"type": "doc.enum"
}
],
"desc": "```lua\n\"low\" | \"high\"\n```",
"fields": [],
"name": "level2",
"rawdesc": "```lua\n\"low\" | \"high\"\n```",
"type": "type"
},
```

Issues:
- Description of enum `Description of enum level2.` is missing.
- Description of enum items `Low level.` and `High level.` are missing.

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 los dos ejemplos de enum anotados del issue e inspecciona los puntos de entrada del language server para el procesamiento de anotaciones y la salida JSON. Compara los rangos de origen y las descripciones propagadas para el enum y sus elementos. Se considera terminado cuando ambas formas conservan las descripciones del enum y de los elementos, informan de valores correctos de inicio/finalización y la estructura de salida coincide con el comportamiento previsto del proyecto.

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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.