29 lines
683 B
TypeScript
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
|