diff --git a/tests/baselines/reference/metadataOfUnion.js b/tests/baselines/reference/metadataOfUnion.js index 16d0e9c08b8..9a88481c80a 100644 --- a/tests/baselines/reference/metadataOfUnion.js +++ b/tests/baselines/reference/metadataOfUnion.js @@ -13,6 +13,27 @@ class B { @PropDeco z: "foo" | boolean; +} + +enum E { + A, + B, + C, + D +} + +class D { + @PropDeco + a: E.A; + + @PropDeco + b: E.B | E.C; + + @PropDeco + c: E; + + @PropDeco + d: E | number; } //// [metadataOfUnion.js] @@ -48,3 +69,31 @@ __decorate([ PropDeco, __metadata("design:type", Object) ], B.prototype, "z"); +var E; +(function (E) { + E[E["A"] = 0] = "A"; + E[E["B"] = 1] = "B"; + E[E["C"] = 2] = "C"; + E[E["D"] = 3] = "D"; +})(E || (E = {})); +var D = (function () { + function D() { + } + return D; +}()); +__decorate([ + PropDeco, + __metadata("design:type", Number) +], D.prototype, "a"); +__decorate([ + PropDeco, + __metadata("design:type", Number) +], D.prototype, "b"); +__decorate([ + PropDeco, + __metadata("design:type", Number) +], D.prototype, "c"); +__decorate([ + PropDeco, + __metadata("design:type", Number) +], D.prototype, "d"); diff --git a/tests/baselines/reference/metadataOfUnion.symbols b/tests/baselines/reference/metadataOfUnion.symbols index 92934ad2025..22c0cc37602 100644 --- a/tests/baselines/reference/metadataOfUnion.symbols +++ b/tests/baselines/reference/metadataOfUnion.symbols @@ -31,3 +31,55 @@ class B { z: "foo" | boolean; >z : Symbol(B.z, Decl(metadataOfUnion.ts, 10, 22)) } + +enum E { +>E : Symbol(E, Decl(metadataOfUnion.ts, 14, 1)) + + A, +>A : Symbol(E.A, Decl(metadataOfUnion.ts, 16, 8)) + + B, +>B : Symbol(E.B, Decl(metadataOfUnion.ts, 17, 6)) + + C, +>C : Symbol(E.C, Decl(metadataOfUnion.ts, 18, 6)) + + D +>D : Symbol(E.D, Decl(metadataOfUnion.ts, 19, 6)) +} + +class D { +>D : Symbol(D, Decl(metadataOfUnion.ts, 21, 1)) + + @PropDeco +>PropDeco : Symbol(PropDeco, Decl(metadataOfUnion.ts, 0, 0)) + + a: E.A; +>a : Symbol(D.a, Decl(metadataOfUnion.ts, 23, 9)) +>E : Symbol(E, Decl(metadataOfUnion.ts, 14, 1)) +>A : Symbol(E.A, Decl(metadataOfUnion.ts, 16, 8)) + + @PropDeco +>PropDeco : Symbol(PropDeco, Decl(metadataOfUnion.ts, 0, 0)) + + b: E.B | E.C; +>b : Symbol(D.b, Decl(metadataOfUnion.ts, 25, 11)) +>E : Symbol(E, Decl(metadataOfUnion.ts, 14, 1)) +>B : Symbol(E.B, Decl(metadataOfUnion.ts, 17, 6)) +>E : Symbol(E, Decl(metadataOfUnion.ts, 14, 1)) +>C : Symbol(E.C, Decl(metadataOfUnion.ts, 18, 6)) + + @PropDeco +>PropDeco : Symbol(PropDeco, Decl(metadataOfUnion.ts, 0, 0)) + + c: E; +>c : Symbol(D.c, Decl(metadataOfUnion.ts, 28, 17)) +>E : Symbol(E, Decl(metadataOfUnion.ts, 14, 1)) + + @PropDeco +>PropDeco : Symbol(PropDeco, Decl(metadataOfUnion.ts, 0, 0)) + + d: E | number; +>d : Symbol(D.d, Decl(metadataOfUnion.ts, 31, 9)) +>E : Symbol(E, Decl(metadataOfUnion.ts, 14, 1)) +} diff --git a/tests/baselines/reference/metadataOfUnion.types b/tests/baselines/reference/metadataOfUnion.types index 07a2724bd51..08afc4e81bb 100644 --- a/tests/baselines/reference/metadataOfUnion.types +++ b/tests/baselines/reference/metadataOfUnion.types @@ -32,3 +32,55 @@ class B { z: "foo" | boolean; >z : boolean | "foo" } + +enum E { +>E : E + + A, +>A : E.A + + B, +>B : E.B + + C, +>C : E.C + + D +>D : E.D +} + +class D { +>D : D + + @PropDeco +>PropDeco : (target: Object, propKey: string | symbol) => void + + a: E.A; +>a : E.A +>E : any +>A : E.A + + @PropDeco +>PropDeco : (target: Object, propKey: string | symbol) => void + + b: E.B | E.C; +>b : E.B | E.C +>E : any +>B : E.B +>E : any +>C : E.C + + @PropDeco +>PropDeco : (target: Object, propKey: string | symbol) => void + + c: E; +>c : E +>E : E + + @PropDeco +>PropDeco : (target: Object, propKey: string | symbol) => void + + d: E | number; +>d : number | E +>E : E +} diff --git a/tests/cases/compiler/metadataOfUnion.ts b/tests/cases/compiler/metadataOfUnion.ts index 7676ea81e77..2093357cb31 100644 --- a/tests/cases/compiler/metadataOfUnion.ts +++ b/tests/cases/compiler/metadataOfUnion.ts @@ -14,4 +14,25 @@ class B { @PropDeco z: "foo" | boolean; +} + +enum E { + A, + B, + C, + D +} + +class D { + @PropDeco + a: E.A; + + @PropDeco + b: E.B | E.C; + + @PropDeco + c: E; + + @PropDeco + d: E | number; } \ No newline at end of file