LuaLS / LuaLS/lua-language-server
Proposal: Add @constructor Tag for Class Constructors in Lua LSP
Personne n'a encore pris cette issue.
- Langage dominant
- Lua
- Étoiles
- 4.4k
- Forks
- 442
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
This Lua LSP could benefit from a new @constructor tag, which would be used when defining classes, especially with libraries. Currently, we have to do something like this:
---@class myCls
---@overload fun(a: integer, b: integer): myCls
local myCls = class "myCls"
---@param a integer
---@param b integer
function myCls:__init(a, b)
self.a = a
self.b = b
end
local instance = myCls(10, 20)
print(instance)
As you can see, we need to create an overload for the variable, which makes the typing process quite repetitive. To address this, we could introduce a new @constructor tag that would automatically handle this:
---@class myCls
local myCls = class "myCls" -- No need for an overload anymore.
-- Defining this method as the constructor:
---@constructor
---@param a integer
---@param b integer
function myCls:__init(a, b)
self.a = a
self.b = b
end
local instance = myCls(10, 20) -- Type checking would work correctly and show the constructor parameters.
print(instance)
This approach would make the code cleaner and more intuitive, reducing the need for repetitive annotations and improving the overall developer experience.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par examiner le comportement existant de @class et @overload à partir des exemples de cette issue ; aucun fichier, test ou point d’entrée n’est indiqué. Le travail devrait être considéré comme terminé lorsque le fait de marquer init avec @constructor fournit les paramètres du constructeur pour des appels tels que myCls(10, 20), sans nécessiter de overload séparé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- lua
- Domaine
- devtools
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100