TypeScript/tests/cases/compiler/enumLiteralAssignableToEnumInsideUnion.ts
2016-09-12 14:13:17 -07:00

29 lines
683 B
TypeScript

module X {
export enum Foo {
A, B
}
}
module Y {
export enum Foo {
A, B
}
}
module Z {
export enum Foo {
A = 1 << 1,
B = 1 << 2,
}
}
module Ka {
export enum Foo {
A = 1 << 10,
B = 1 << 11,
}
}
const e0: X.Foo | boolean = Y.Foo.A; // ok
const e1: X.Foo | boolean = Z.Foo.A; // not legal, Z is computed
const e2: X.Foo.A | X.Foo.B | boolean = Z.Foo.A; // still not legal
const e3: X.Foo.B | boolean = Z.Foo.A; // not legal
const e4: X.Foo.A | boolean = Z.Foo.A; // not legal either because Z.Foo is computed and Z.Foo.A is not necessarily assignable to X.Foo.A
const e5: Ka.Foo | boolean = Z.Foo.A; // ok