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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
=== tests/cases/compiler/mappedTypeRecursiveInference.ts ===
interface A { a: A }
>A : Symbol(A, Decl(mappedTypeRecursiveInference.ts, 0, 0))
>a : Symbol(A.a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>A : Symbol(A, Decl(mappedTypeRecursiveInference.ts, 0, 0))
declare let a: A;
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 1, 11))
>A : Symbol(A, Decl(mappedTypeRecursiveInference.ts, 0, 0))
type Deep<T> = { [K in keyof T]: Deep<T[K]> }
>Deep : Symbol(Deep, Decl(mappedTypeRecursiveInference.ts, 1, 17))
>T : Symbol(T, Decl(mappedTypeRecursiveInference.ts, 2, 10))
>K : Symbol(K, Decl(mappedTypeRecursiveInference.ts, 2, 18))
>T : Symbol(T, Decl(mappedTypeRecursiveInference.ts, 2, 10))
>Deep : Symbol(Deep, Decl(mappedTypeRecursiveInference.ts, 1, 17))
>T : Symbol(T, Decl(mappedTypeRecursiveInference.ts, 2, 10))
>K : Symbol(K, Decl(mappedTypeRecursiveInference.ts, 2, 18))
declare function foo<T>(deep: Deep<T>): T;
>foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45))
>T : Symbol(T, Decl(mappedTypeRecursiveInference.ts, 3, 21))
>deep : Symbol(deep, Decl(mappedTypeRecursiveInference.ts, 3, 24))
>Deep : Symbol(Deep, Decl(mappedTypeRecursiveInference.ts, 1, 17))
>T : Symbol(T, Decl(mappedTypeRecursiveInference.ts, 3, 21))
>T : Symbol(T, Decl(mappedTypeRecursiveInference.ts, 3, 21))
const out = foo(a);
>out : Symbol(out, Decl(mappedTypeRecursiveInference.ts, 4, 5))
>foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 1, 11))
out.a
>out.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>out : Symbol(out, Decl(mappedTypeRecursiveInference.ts, 4, 5))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
out.a.a
>out.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>out.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>out : Symbol(out, Decl(mappedTypeRecursiveInference.ts, 4, 5))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
out.a.a.a.a.a.a.a
>out.a.a.a.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>out.a.a.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>out.a.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>out.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>out.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>out.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>out.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>out : Symbol(out, Decl(mappedTypeRecursiveInference.ts, 4, 5))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13))
interface B { [s: string]: B }
>B : Symbol(B, Decl(mappedTypeRecursiveInference.ts, 7, 17))
>s : Symbol(s, Decl(mappedTypeRecursiveInference.ts, 10, 15))
>B : Symbol(B, Decl(mappedTypeRecursiveInference.ts, 7, 17))
declare let b: B;
>b : Symbol(b, Decl(mappedTypeRecursiveInference.ts, 11, 11))
>B : Symbol(B, Decl(mappedTypeRecursiveInference.ts, 7, 17))
const oub = foo(b);
>oub : Symbol(oub, Decl(mappedTypeRecursiveInference.ts, 12, 5))
>foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45))
>b : Symbol(b, Decl(mappedTypeRecursiveInference.ts, 11, 11))
oub.b
>oub : Symbol(oub, Decl(mappedTypeRecursiveInference.ts, 12, 5))
oub.b.b
>oub : Symbol(oub, Decl(mappedTypeRecursiveInference.ts, 12, 5))
oub.b.a.n.a.n.a
>oub : Symbol(oub, Decl(mappedTypeRecursiveInference.ts, 12, 5))
let xhr: XMLHttpRequest;
>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 17, 3))
>XMLHttpRequest : Symbol(XMLHttpRequest, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
const out2 = foo(xhr);
>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 18, 5))
>foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45))
>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 17, 3))
out2.responseXML
>out2.responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --))
>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 18, 5))
>responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --))
out2.responseXML.activeElement.className.length
>out2.responseXML.activeElement.className.length : Symbol(length, Decl(lib.es5.d.ts, --, --))
>out2.responseXML.activeElement.className : Symbol(className, Decl(lib.dom.d.ts, --, --))
>out2.responseXML.activeElement : Symbol(activeElement, Decl(lib.dom.d.ts, --, --))
>out2.responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --))
>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 18, 5))
>responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --))
>activeElement : Symbol(activeElement, Decl(lib.dom.d.ts, --, --))
>className : Symbol(className, Decl(lib.dom.d.ts, --, --))
>length : Symbol(length, Decl(lib.es5.d.ts, --, --))
|