Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

A union type should not merge class fields

Ouverte
#3,410 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Calme
Stack technique
lua
Domaine
tooling

Piste de recherche

Reproduisez l’exemple annoté TypeA|TypeB dans l’extension Visual Studio Code, puis suivez la manière dont le language server fusionne les champs des classes d’union. C’est terminé lorsque le discriminateur sélectionne la classe correcte et signale le champ commun non concordant commonField ainsi que les champs spécifiques aux membres présentés dans l’exemple.

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

Description

How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

Which OS are you using?

MacOS

What is the issue affecting?

Annotations

Expected Behaviour
---@class (exact) TypeA
---@field type 'A'
---@field commonField number
---@field specificFieldA number

---@class (exact) TypeB
---@field type 'B'
---@field commonField string
---@field specificFieldB string

---@alias Type_Either_A_Or_B_But_Not_Both TypeA|TypeB

---@type Type_Either_A_Or_B_But_Not_Both
local testA = {
    type = 'A', --- Indicates that this should be of TypeA
    commonField = 'test', --- Should be an error. TypeA.commonField should be a number
    specificFieldA = 123, --- OK
    specificFieldB = 'Hello' --- Should be an error. TypeA.specificFieldB doesn't exist
}

---@type Type_Either_A_Or_B_But_Not_Both
local testB = {
    type = 'B', --- Indicates that this should be of TypeB
    commonField = 'test', --- OK
    specificFieldA = 123, --- Should be an error. TypeB.specificFieldA doesn't exist
    specificFieldB = 'Hello' --- OK
}
Actual Behaviour

TypeA|TypeB is merged, so none of the mismatched fields/types are reported as errors.

local testA: TypeA|TypeB {
    commonField: string|number,
    specificFieldA: number,
    specificFieldB: string,
    type: 'A'|'B',
}
Reproduction steps

Paste the code into vscode

Additional Notes

No response

Log File

No response

Langage dominant
Lua
Étoiles
4.4k
Forks
442
Merge moyen
8 j 9 h
PR mergées (30 j)
1

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.

Autres issues de LuaLS/lua-language-server

Toutes les issues de LuaLS/lua-language-server

Issues similaires

Plus d'issues Lua

Recevez les nouvelles issues par e-mail

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