=== tests/cases/compiler/mutrec.ts === interface A { >A : A x:B[]; >x : B[] >B : B } interface B { >B : B x:A[]; >x : A[] >A : A } function f(p: A) { return p }; >f : (p: A) => A >p : A >A : A >p : A var b:B; >b : B >B : B f(b); >f(b) : A >f : (p: A) => A >b : B interface I1 { >I1 : I1 y:I2; >y : I2 >I2 : I2 } interface I2 { >I2 : I2 y:I3; >y : I3 >I3 : I3 } interface I3 { >I3 : I3 y:I1; >y : I1 >I1 : I1 } function g(p: I1) { return p }; >g : (p: I1) => I1 >p : I1 >I1 : I1 >p : I1 var i2:I2; >i2 : I2 >I2 : I2 g(i2); >g(i2) : I1 >g : (p: I1) => I1 >i2 : I2 var i3:I3; >i3 : I3 >I3 : I3 g(i3); >g(i3) : I1 >g : (p: I1) => I1 >i3 : I3 interface I4 { >I4 : I4 y:I5; >y : I5 >I5 : I5 } interface I5 { >I5 : I5 y:I4; >y : I4 >I4 : I4 } var i4:I4; >i4 : I4 >I4 : I4 g(i4); >g(i4) : I1 >g : (p: I1) => I1 >i4 : I4