=== tests/cases/conformance/types/typeRelationships/recursiveTypes/infiniteExpansionThroughTypeInference.ts === interface G { >G : Symbol(G, Decl(infiniteExpansionThroughTypeInference.ts, 0, 0)) >T : Symbol(T, Decl(infiniteExpansionThroughTypeInference.ts, 0, 12)) x: G> // infinitely expanding type reference >x : Symbol(x, Decl(infiniteExpansionThroughTypeInference.ts, 0, 16)) >G : Symbol(G, Decl(infiniteExpansionThroughTypeInference.ts, 0, 0)) >G : Symbol(G, Decl(infiniteExpansionThroughTypeInference.ts, 0, 0)) >T : Symbol(T, Decl(infiniteExpansionThroughTypeInference.ts, 0, 12)) y: T >y : Symbol(y, Decl(infiniteExpansionThroughTypeInference.ts, 1, 14)) >T : Symbol(T, Decl(infiniteExpansionThroughTypeInference.ts, 0, 12)) } function ff(g: G): void { >ff : Symbol(ff, Decl(infiniteExpansionThroughTypeInference.ts, 3, 1)) >T : Symbol(T, Decl(infiniteExpansionThroughTypeInference.ts, 5, 12)) >g : Symbol(g, Decl(infiniteExpansionThroughTypeInference.ts, 5, 15)) >G : Symbol(G, Decl(infiniteExpansionThroughTypeInference.ts, 0, 0)) >T : Symbol(T, Decl(infiniteExpansionThroughTypeInference.ts, 5, 12)) ff(g) // when infering T here we need to make sure to not descend into the structure of G infinitely >ff : Symbol(ff, Decl(infiniteExpansionThroughTypeInference.ts, 3, 1)) >g : Symbol(g, Decl(infiniteExpansionThroughTypeInference.ts, 5, 15)) }