LuaLS / LuaLS/lua-language-server

enum inherits fields from class with different name

Ouverte
#2,304 0 commentaires 0 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

How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

Which OS are you using?

Windows

What is the issue affecting?

Annotations

Expected Behaviour

As far as enum has unique name, this warning should not exist.

Actual Behaviour

Here is my annotations:

-- RenderMode.Regular, path: ['viewscreen_titlest', 'menu_line_id'], container
---@class viewscreen_titlest.menu_line_id_C
---@field [integer] viewscreen_titlest.menu_line_id
---@field resize fun(self: self, size: integer): nil
---@field insert fun(self: self, index: "#"|integer, item: viewscreen_titlest.menu_line_id): nil
---@field erase fun(self: self, index: integer): nil
---@field assign fun(self: self, obj: self): nil
---@field delete fun(self: self): boolean
---@field _displace fun(self: self, index: integer): self
---@field _kind "primitive"|"struct"|"container"|"bitfield"
---@field _type table | string
df.viewscreen_titlest.menu_line_id_C = nil

-- RenderMode.Regular, path: ['viewscreen_titlest', 'menu_line_id'], enum
---@enum viewscreen_titlest.menu_line_id
df.viewscreen_titlest.menu_line_id = {
    Continue = 0,
    Start = 1,
    NewWorld = 2,
    TestingArena = 3, -- nonfunctional in 50.04
    Mods = 4, -- nonfunctional in 50.04 since v50.01
    Settings = 5,
    AboutDF = 6,
    Quit = 7,
}

As you can see, there are different typenames and objects names.
But enum requires class fields.

Missing required fields in type `viewscreen_titlest.menu_line_id_C`: `resize`, `insert`, `erase`, `assign`, `delete`, `_displace`, `_kind`, `_type`
image
Reproduction steps

Get code above and check.

Additional Notes

No response

Log File

No response

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

Commencez par la reproduction annotée dans l’issue et suivez la manière dont le language server résout les déclarations @enum et @class lorsque leurs noms de type et d’objet diffèrent. Vérifiez le diagnostic qui signale que les champs de la classe sont manquants, puis confirmez que l’avertissement est absent pour cet enum distinct, tandis que les vérifications réelles des champs obligatoires restent intactes.

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é
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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