1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
=== tests/cases/compiler/typeComparisonCaching.ts ===
// Check that we only cache results of type comparisons that are free of assumptions
interface A {
>A : Symbol(A, Decl(typeComparisonCaching.ts, 0, 0))
p: C;
>p : Symbol(A.p, Decl(typeComparisonCaching.ts, 2, 13))
>C : Symbol(C, Decl(typeComparisonCaching.ts, 10, 1))
s: string;
>s : Symbol(A.s, Decl(typeComparisonCaching.ts, 3, 9))
}
interface B {
>B : Symbol(B, Decl(typeComparisonCaching.ts, 5, 1))
p: D;
>p : Symbol(B.p, Decl(typeComparisonCaching.ts, 7, 13))
>D : Symbol(D, Decl(typeComparisonCaching.ts, 14, 1))
s: number;
>s : Symbol(B.s, Decl(typeComparisonCaching.ts, 8, 9))
}
interface C {
>C : Symbol(C, Decl(typeComparisonCaching.ts, 10, 1))
q: A;
>q : Symbol(C.q, Decl(typeComparisonCaching.ts, 12, 13))
>A : Symbol(A, Decl(typeComparisonCaching.ts, 0, 0))
}
interface D {
>D : Symbol(D, Decl(typeComparisonCaching.ts, 14, 1))
q: B;
>q : Symbol(D.q, Decl(typeComparisonCaching.ts, 16, 13))
>B : Symbol(B, Decl(typeComparisonCaching.ts, 5, 1))
}
var a: A;
>a : Symbol(a, Decl(typeComparisonCaching.ts, 20, 3))
>A : Symbol(A, Decl(typeComparisonCaching.ts, 0, 0))
var b: B;
>b : Symbol(b, Decl(typeComparisonCaching.ts, 21, 3))
>B : Symbol(B, Decl(typeComparisonCaching.ts, 5, 1))
var c: C;
>c : Symbol(c, Decl(typeComparisonCaching.ts, 22, 3))
>C : Symbol(C, Decl(typeComparisonCaching.ts, 10, 1))
var d: D;
>d : Symbol(d, Decl(typeComparisonCaching.ts, 23, 3))
>D : Symbol(D, Decl(typeComparisonCaching.ts, 14, 1))
a = b;
>a : Symbol(a, Decl(typeComparisonCaching.ts, 20, 3))
>b : Symbol(b, Decl(typeComparisonCaching.ts, 21, 3))
c = d; // Should not be allowed
>c : Symbol(c, Decl(typeComparisonCaching.ts, 22, 3))
>d : Symbol(d, Decl(typeComparisonCaching.ts, 23, 3))
|