|
| 1 | +=== tests/cases/compiler/genericIndexedAccessVarianceComparisonResultCorrect.ts === |
| 2 | +class A { |
| 3 | +>A : Symbol(A, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 0, 0)) |
| 4 | + |
| 5 | + x: string = 'A'; |
| 6 | +>x : Symbol(A.x, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 0, 9)) |
| 7 | + |
| 8 | + y: number = 0; |
| 9 | +>y : Symbol(A.y, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 1, 20)) |
| 10 | +} |
| 11 | + |
| 12 | +class B { |
| 13 | +>B : Symbol(B, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 3, 1)) |
| 14 | + |
| 15 | + x: string = 'B'; |
| 16 | +>x : Symbol(B.x, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 5, 9)) |
| 17 | + |
| 18 | + z: boolean = true; |
| 19 | +>z : Symbol(B.z, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 6, 20)) |
| 20 | +} |
| 21 | + |
| 22 | +type T<X extends { x: any }> = Pick<X, 'x'>; |
| 23 | +>T : Symbol(T, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 8, 1)) |
| 24 | +>X : Symbol(X, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 10, 7)) |
| 25 | +>x : Symbol(x, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 10, 18)) |
| 26 | +>Pick : Symbol(Pick, Decl(lib.es5.d.ts, --, --)) |
| 27 | +>X : Symbol(X, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 10, 7)) |
| 28 | + |
| 29 | +type C = T<A>; |
| 30 | +>C : Symbol(C, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 10, 44)) |
| 31 | +>T : Symbol(T, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 8, 1)) |
| 32 | +>A : Symbol(A, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 0, 0)) |
| 33 | + |
| 34 | +type D = T<B>; |
| 35 | +>D : Symbol(D, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 12, 14)) |
| 36 | +>T : Symbol(T, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 8, 1)) |
| 37 | +>B : Symbol(B, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 3, 1)) |
| 38 | + |
| 39 | +type C_extends_D = C extends D ? true : false; // true |
| 40 | +>C_extends_D : Symbol(C_extends_D, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 13, 14)) |
| 41 | +>C : Symbol(C, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 10, 44)) |
| 42 | +>D : Symbol(D, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 12, 14)) |
| 43 | + |
| 44 | +type PickA_extends_PickB = Pick<A, 'x'> extends Pick<B, 'x'> ? true : false; // true |
| 45 | +>PickA_extends_PickB : Symbol(PickA_extends_PickB, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 15, 46)) |
| 46 | +>Pick : Symbol(Pick, Decl(lib.es5.d.ts, --, --)) |
| 47 | +>A : Symbol(A, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 0, 0)) |
| 48 | +>Pick : Symbol(Pick, Decl(lib.es5.d.ts, --, --)) |
| 49 | +>B : Symbol(B, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 3, 1)) |
| 50 | + |
| 51 | +type TA_extends_TB = T<A> extends T<B> ? true : false; // should be true |
| 52 | +>TA_extends_TB : Symbol(TA_extends_TB, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 16, 76)) |
| 53 | +>T : Symbol(T, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 8, 1)) |
| 54 | +>A : Symbol(A, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 0, 0)) |
| 55 | +>T : Symbol(T, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 8, 1)) |
| 56 | +>B : Symbol(B, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 3, 1)) |
| 57 | + |
| 58 | +declare let a: T<A>; |
| 59 | +>a : Symbol(a, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 19, 11)) |
| 60 | +>T : Symbol(T, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 8, 1)) |
| 61 | +>A : Symbol(A, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 0, 0)) |
| 62 | + |
| 63 | +declare let b: T<B>; |
| 64 | +>b : Symbol(b, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 20, 11)) |
| 65 | +>T : Symbol(T, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 8, 1)) |
| 66 | +>B : Symbol(B, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 3, 1)) |
| 67 | + |
| 68 | +declare let c: C; |
| 69 | +>c : Symbol(c, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 21, 11)) |
| 70 | +>C : Symbol(C, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 10, 44)) |
| 71 | + |
| 72 | +declare let d: D; |
| 73 | +>d : Symbol(d, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 22, 11)) |
| 74 | +>D : Symbol(D, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 12, 14)) |
| 75 | + |
| 76 | +b = a; // should be no error |
| 77 | +>b : Symbol(b, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 20, 11)) |
| 78 | +>a : Symbol(a, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 19, 11)) |
| 79 | + |
| 80 | +c = d; |
| 81 | +>c : Symbol(c, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 21, 11)) |
| 82 | +>d : Symbol(d, Decl(genericIndexedAccessVarianceComparisonResultCorrect.ts, 22, 11)) |
| 83 | + |
0 commit comments