=== tests/cases/compiler/recursiveTypeParameterReferenceError1.ts === class X { } >X : X, Symbol(X, Decl(recursiveTypeParameterReferenceError1.ts, 0, 0)) >T : T, Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 0, 8)) interface Foo { >Foo : Foo, Symbol(Foo, Decl(recursiveTypeParameterReferenceError1.ts, 0, 14)) >T : T, Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 1, 14)) z: Foo>; // error >z : Foo>, Symbol(z, Decl(recursiveTypeParameterReferenceError1.ts, 1, 18)) >Foo : Foo, Symbol(Foo, Decl(recursiveTypeParameterReferenceError1.ts, 0, 14)) >X : X, Symbol(X, Decl(recursiveTypeParameterReferenceError1.ts, 0, 0)) >T : T, Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 1, 14)) } var f: Foo; >f : Foo, Symbol(f, Decl(recursiveTypeParameterReferenceError1.ts, 4, 3)) >Foo : Foo, Symbol(Foo, Decl(recursiveTypeParameterReferenceError1.ts, 0, 14)) var r = f.z; >r : Foo>, Symbol(r, Decl(recursiveTypeParameterReferenceError1.ts, 5, 3)) >f.z : Foo>, Symbol(Foo.z, Decl(recursiveTypeParameterReferenceError1.ts, 1, 18)) >f : Foo, Symbol(f, Decl(recursiveTypeParameterReferenceError1.ts, 4, 3)) >z : Foo>, Symbol(Foo.z, Decl(recursiveTypeParameterReferenceError1.ts, 1, 18)) class C2 { >C2 : C2, Symbol(C2, Decl(recursiveTypeParameterReferenceError1.ts, 5, 12)) >T : T, Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 8, 9)) x: T; >x : T, Symbol(x, Decl(recursiveTypeParameterReferenceError1.ts, 8, 13)) >T : T, Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 8, 9)) } interface Foo2 { >Foo2 : Foo2, Symbol(Foo2, Decl(recursiveTypeParameterReferenceError1.ts, 10, 1)) >T : T, Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 11, 15)) ofC4: C2<{ x: T }> // ok >ofC4 : C2<{ x: T; }>, Symbol(ofC4, Decl(recursiveTypeParameterReferenceError1.ts, 11, 19)) >C2 : C2, Symbol(C2, Decl(recursiveTypeParameterReferenceError1.ts, 5, 12)) >x : T, Symbol(x, Decl(recursiveTypeParameterReferenceError1.ts, 12, 14)) >T : T, Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 11, 15)) } var f2: Foo2; >f2 : Foo2, Symbol(f2, Decl(recursiveTypeParameterReferenceError1.ts, 14, 3)) >Foo2 : Foo2, Symbol(Foo2, Decl(recursiveTypeParameterReferenceError1.ts, 10, 1)) var r2 = f2.ofC4; >r2 : C2<{ x: number; }>, Symbol(r2, Decl(recursiveTypeParameterReferenceError1.ts, 15, 3)) >f2.ofC4 : C2<{ x: number; }>, Symbol(Foo2.ofC4, Decl(recursiveTypeParameterReferenceError1.ts, 11, 19)) >f2 : Foo2, Symbol(f2, Decl(recursiveTypeParameterReferenceError1.ts, 14, 3)) >ofC4 : C2<{ x: number; }>, Symbol(Foo2.ofC4, Decl(recursiveTypeParameterReferenceError1.ts, 11, 19))