=== tests/cases/compiler/cyclicGenericTypeInstantiation.ts === function foo() { >foo : Symbol(foo, Decl(cyclicGenericTypeInstantiation.ts, 0, 0)) >T : Symbol(T, Decl(cyclicGenericTypeInstantiation.ts, 0, 13)) var z = foo(); >z : Symbol(z, Decl(cyclicGenericTypeInstantiation.ts, 1, 7)) >foo : Symbol(foo, Decl(cyclicGenericTypeInstantiation.ts, 0, 0)) >y : Symbol(y, Decl(cyclicGenericTypeInstantiation.ts, 2, 7)) var y: { >y : Symbol(y, Decl(cyclicGenericTypeInstantiation.ts, 2, 7)) y2: typeof z >y2 : Symbol(y2, Decl(cyclicGenericTypeInstantiation.ts, 2, 12)) >z : Symbol(z, Decl(cyclicGenericTypeInstantiation.ts, 1, 7)) }; return y; >y : Symbol(y, Decl(cyclicGenericTypeInstantiation.ts, 2, 7)) } function bar() { >bar : Symbol(bar, Decl(cyclicGenericTypeInstantiation.ts, 6, 1)) >T : Symbol(T, Decl(cyclicGenericTypeInstantiation.ts, 9, 13)) var z = bar(); >z : Symbol(z, Decl(cyclicGenericTypeInstantiation.ts, 10, 7)) >bar : Symbol(bar, Decl(cyclicGenericTypeInstantiation.ts, 6, 1)) >y : Symbol(y, Decl(cyclicGenericTypeInstantiation.ts, 11, 7)) var y: { >y : Symbol(y, Decl(cyclicGenericTypeInstantiation.ts, 11, 7)) y2: typeof z; >y2 : Symbol(y2, Decl(cyclicGenericTypeInstantiation.ts, 11, 12)) >z : Symbol(z, Decl(cyclicGenericTypeInstantiation.ts, 10, 7)) } return y; >y : Symbol(y, Decl(cyclicGenericTypeInstantiation.ts, 11, 7)) } var a = foo(); >a : Symbol(a, Decl(cyclicGenericTypeInstantiation.ts, 17, 3)) >foo : Symbol(foo, Decl(cyclicGenericTypeInstantiation.ts, 0, 0)) var b = bar(); >b : Symbol(b, Decl(cyclicGenericTypeInstantiation.ts, 18, 3)) >bar : Symbol(bar, Decl(cyclicGenericTypeInstantiation.ts, 6, 1)) a = b; >a : Symbol(a, Decl(cyclicGenericTypeInstantiation.ts, 17, 3)) >b : Symbol(b, Decl(cyclicGenericTypeInstantiation.ts, 18, 3))