|
| 1 | +=== tests/cases/compiler/conditionalEqualityTestingNullability.ts === |
| 2 | +export type Equals<A1 extends any, A2 extends any> = |
| 3 | +>Equals : Symbol(Equals, Decl(conditionalEqualityTestingNullability.ts, 0, 0)) |
| 4 | +>A1 : Symbol(A1, Decl(conditionalEqualityTestingNullability.ts, 0, 19)) |
| 5 | +>A2 : Symbol(A2, Decl(conditionalEqualityTestingNullability.ts, 0, 34)) |
| 6 | + |
| 7 | + (<A>() => A extends A1 ? 1 : 0) extends (<A>() => A extends A2 ? 1 : 0) |
| 8 | +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 6)) |
| 9 | +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 6)) |
| 10 | +>A1 : Symbol(A1, Decl(conditionalEqualityTestingNullability.ts, 0, 19)) |
| 11 | +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 46)) |
| 12 | +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 46)) |
| 13 | +>A2 : Symbol(A2, Decl(conditionalEqualityTestingNullability.ts, 0, 34)) |
| 14 | + |
| 15 | + ? 1 |
| 16 | + : 0 |
| 17 | + |
| 18 | +interface Foo<T> { |
| 19 | +>Foo : Symbol(Foo, Decl(conditionalEqualityTestingNullability.ts, 3, 7)) |
| 20 | +>T : Symbol(T, Decl(conditionalEqualityTestingNullability.ts, 5, 14)) |
| 21 | + |
| 22 | + x : () => T |
| 23 | +>x : Symbol(Foo.x, Decl(conditionalEqualityTestingNullability.ts, 5, 18)) |
| 24 | +>T : Symbol(T, Decl(conditionalEqualityTestingNullability.ts, 5, 14)) |
| 25 | +} |
| 26 | + |
| 27 | +declare const a: Foo<Date>; |
| 28 | +>a : Symbol(a, Decl(conditionalEqualityTestingNullability.ts, 9, 13)) |
| 29 | +>Foo : Symbol(Foo, Decl(conditionalEqualityTestingNullability.ts, 3, 7)) |
| 30 | +>Date : Symbol(Date, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.scripthost.d.ts, --, --)) |
| 31 | + |
| 32 | +declare const b: Foo<Date | null>; |
| 33 | +>b : Symbol(b, Decl(conditionalEqualityTestingNullability.ts, 10, 13)) |
| 34 | +>Foo : Symbol(Foo, Decl(conditionalEqualityTestingNullability.ts, 3, 7)) |
| 35 | +>Date : Symbol(Date, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.scripthost.d.ts, --, --)) |
| 36 | + |
| 37 | +//Expected 0, Actual 1 |
| 38 | +type ShouldBe0 = Equals<typeof a, typeof b>; |
| 39 | +>ShouldBe0 : Symbol(ShouldBe0, Decl(conditionalEqualityTestingNullability.ts, 10, 34)) |
| 40 | +>Equals : Symbol(Equals, Decl(conditionalEqualityTestingNullability.ts, 0, 0)) |
| 41 | +>a : Symbol(a, Decl(conditionalEqualityTestingNullability.ts, 9, 13)) |
| 42 | +>b : Symbol(b, Decl(conditionalEqualityTestingNullability.ts, 10, 13)) |
| 43 | + |
0 commit comments