=== tests/cases/compiler/infinitelyExpandingTypes3.ts === interface List { >List : List, Symbol(List, Decl(infinitelyExpandingTypes3.ts, 0, 0)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes3.ts, 0, 15)) data: T; >data : T, Symbol(data, Decl(infinitelyExpandingTypes3.ts, 0, 19)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes3.ts, 0, 15)) next: List; // will be recursive reference when OwnerList is expanded >next : List, Symbol(next, Decl(infinitelyExpandingTypes3.ts, 1, 12)) >List : List, Symbol(List, Decl(infinitelyExpandingTypes3.ts, 0, 0)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes3.ts, 0, 15)) owner: OwnerList; >owner : OwnerList, Symbol(owner, Decl(infinitelyExpandingTypes3.ts, 2, 18)) >OwnerList : OwnerList, Symbol(OwnerList, Decl(infinitelyExpandingTypes3.ts, 4, 1)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes3.ts, 0, 15)) } interface OwnerList extends List> { >OwnerList : OwnerList, Symbol(OwnerList, Decl(infinitelyExpandingTypes3.ts, 4, 1)) >U : U, Symbol(U, Decl(infinitelyExpandingTypes3.ts, 6, 20)) >List : List, Symbol(List, Decl(infinitelyExpandingTypes3.ts, 0, 0)) >List : List, Symbol(List, Decl(infinitelyExpandingTypes3.ts, 0, 0)) >U : U, Symbol(U, Decl(infinitelyExpandingTypes3.ts, 6, 20)) name: string; >name : string, Symbol(name, Decl(infinitelyExpandingTypes3.ts, 6, 46)) } interface OwnerList2 extends List> { >OwnerList2 : OwnerList2, Symbol(OwnerList2, Decl(infinitelyExpandingTypes3.ts, 8, 1)) >U : U, Symbol(U, Decl(infinitelyExpandingTypes3.ts, 10, 21)) >List : List, Symbol(List, Decl(infinitelyExpandingTypes3.ts, 0, 0)) >List : List, Symbol(List, Decl(infinitelyExpandingTypes3.ts, 0, 0)) >U : U, Symbol(U, Decl(infinitelyExpandingTypes3.ts, 10, 21)) name: string; >name : string, Symbol(name, Decl(infinitelyExpandingTypes3.ts, 10, 47)) } var o1: OwnerList; >o1 : OwnerList, Symbol(o1, Decl(infinitelyExpandingTypes3.ts, 14, 3)) >OwnerList : OwnerList, Symbol(OwnerList, Decl(infinitelyExpandingTypes3.ts, 4, 1)) var o2: OwnerList2; >o2 : OwnerList2, Symbol(o2, Decl(infinitelyExpandingTypes3.ts, 15, 3)) >OwnerList2 : OwnerList2, Symbol(OwnerList2, Decl(infinitelyExpandingTypes3.ts, 8, 1)) o1 = o2; // should not error >o1 = o2 : OwnerList2 >o1 : OwnerList, Symbol(o1, Decl(infinitelyExpandingTypes3.ts, 14, 3)) >o2 : OwnerList2, Symbol(o2, Decl(infinitelyExpandingTypes3.ts, 15, 3))