Skip to content

Commit bf3941d

Browse files
committed
Test that enum literal is assignable to an enum in a union
1 parent 7482d5b commit bf3941d

4 files changed

Lines changed: 109 additions & 0 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//// [enumLiteralAssignableToEnumInsideUnion.ts]
2+
module X {
3+
export enum Foo {
4+
A, B
5+
}
6+
}
7+
module Y {
8+
export enum Foo {
9+
A, B
10+
}
11+
}
12+
const y: X.Foo | boolean = Y.Foo.A;
13+
14+
15+
//// [enumLiteralAssignableToEnumInsideUnion.js]
16+
var X;
17+
(function (X) {
18+
(function (Foo) {
19+
Foo[Foo["A"] = 0] = "A";
20+
Foo[Foo["B"] = 1] = "B";
21+
})(X.Foo || (X.Foo = {}));
22+
var Foo = X.Foo;
23+
})(X || (X = {}));
24+
var Y;
25+
(function (Y) {
26+
(function (Foo) {
27+
Foo[Foo["A"] = 0] = "A";
28+
Foo[Foo["B"] = 1] = "B";
29+
})(Y.Foo || (Y.Foo = {}));
30+
var Foo = Y.Foo;
31+
})(Y || (Y = {}));
32+
var y = Y.Foo.A;
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
=== tests/cases/compiler/enumLiteralAssignableToEnumInsideUnion.ts ===
2+
module X {
3+
>X : Symbol(X, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 0, 0))
4+
5+
export enum Foo {
6+
>Foo : Symbol(Foo, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 0, 10))
7+
8+
A, B
9+
>A : Symbol(Foo.A, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 1, 21))
10+
>B : Symbol(Foo.B, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 2, 10))
11+
}
12+
}
13+
module Y {
14+
>Y : Symbol(Y, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 4, 1))
15+
16+
export enum Foo {
17+
>Foo : Symbol(Foo, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 5, 10))
18+
19+
A, B
20+
>A : Symbol(Foo.A, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 6, 21))
21+
>B : Symbol(Foo.B, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 7, 10))
22+
}
23+
}
24+
const y: X.Foo | boolean = Y.Foo.A;
25+
>y : Symbol(y, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 10, 5))
26+
>X : Symbol(X, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 0, 0))
27+
>Foo : Symbol(X.Foo, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 0, 10))
28+
>Y.Foo.A : Symbol(Y.Foo.A, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 6, 21))
29+
>Y.Foo : Symbol(Y.Foo, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 5, 10))
30+
>Y : Symbol(Y, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 4, 1))
31+
>Foo : Symbol(Y.Foo, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 5, 10))
32+
>A : Symbol(Y.Foo.A, Decl(enumLiteralAssignableToEnumInsideUnion.ts, 6, 21))
33+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
=== tests/cases/compiler/enumLiteralAssignableToEnumInsideUnion.ts ===
2+
module X {
3+
>X : typeof X
4+
5+
export enum Foo {
6+
>Foo : Foo
7+
8+
A, B
9+
>A : Foo
10+
>B : Foo
11+
}
12+
}
13+
module Y {
14+
>Y : typeof Y
15+
16+
export enum Foo {
17+
>Foo : Foo
18+
19+
A, B
20+
>A : Foo
21+
>B : Foo
22+
}
23+
}
24+
const y: X.Foo | boolean = Y.Foo.A;
25+
>y : boolean | X.Foo
26+
>X : any
27+
>Foo : X.Foo
28+
>Y.Foo.A : Y.Foo
29+
>Y.Foo : typeof Y.Foo
30+
>Y : typeof Y
31+
>Foo : typeof Y.Foo
32+
>A : Y.Foo
33+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module X {
2+
export enum Foo {
3+
A, B
4+
}
5+
}
6+
module Y {
7+
export enum Foo {
8+
A, B
9+
}
10+
}
11+
const y: X.Foo | boolean = Y.Foo.A;

0 commit comments

Comments
 (0)