LuaLS / LuaLS/lua-language-server

Exact classes can have fields injected when used as parameters to funcitons

Ouverte
#2,288 2 commentaires 12 réactions 0 personnes assignées Voir sur GitHub

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

Love the new exact class! When using it though, I noticed that I could still 'inject' fields into an exact class when it is used as the input to a function. Example:

```
---@class (exact) TestClass
---@field public a number
---@field public b string
---@field public c boolean

---@param test_param TestClass
local function test(test_param)
end

test({a = 1, b = "2", c = true, d = 4})
```
causes no error.

I am not sure if this is intended or not, but I would expect to get an warning like: ```Fields cannot be injected into the reference of `TestClass` for `d`. To do so, use `---@class` for `test_param`.Lua Diagnostics.(inject-field)``` here.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez l’extrait Lua fourni dans lua-language-server et examinez la gestion de exact-class pour la vérification des types des paramètres de fonction. Le travail est terminé lorsque le passage d’un champ d supplémentaire à TestClass produit le diagnostic inject-field demandé, tandis que les champs déclarés a, b et c restent acceptés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
lua
Domaine
devtools
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
42/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.