LuaLS / LuaLS/lua-language-server
Adding ---@class breaks auto completion
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
How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
Linux
What is the issue affecting?
Completion
Expected Behaviour
I'm running into an issue where adding the ---@class annotation to a local variable seems to break auto completion. It should appear correctly even if the ---@class is affixed to a local variable.
Actual Behaviour
The autocomplete variables and functions are not appearing.
Reproduction steps
Here is a simple example of creating a new player class with the issue.
-- Here is a simple example of creating a new player class with the issue
-- Uncommenting the line below *breaks* the autocompletion for p.new()
-- ---@class err.Player
local Player = {}
Player.__index = Player
local function mixin_xy(o)
o.x = 0
o.y = 0
o.set_position = function(self, x, y)
self.x = x
self.y = y
end
return o
end
function Player.new()
local self = {}
self.happy = true
self = mixin_xy(self)
return setmetatable(self, Player)
end
local p = Player.new()
-- `p:set_position(), p.x, p.y, p.happy` no longer showing in auto complete if `---@class err.Player` is uncommented
When ---@class err.Player is uncommented, and above local Player = {}:
When ---@class err.Player is removed or commented:
The above image is the expected behaviour. However, when ---@class err.Player is added above local Player = {} it no longer works.
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
Reproduce el problema en la extensión de Visual Studio Code usando el ejemplo de Lua del informe y compara la finalización con y sin la anotación ---@class err.Player. Rastrea el procesamiento de la finalización para las anotaciones de clase y verifica que p:set_position(), p.x, p.y y p.happy aparezcan cuando la anotación está presente.
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
- 45/100