=== tests/cases/compiler/infinitelyExpandingTypes4.ts === interface Query { >Query : Query, Symbol(Query, Decl(infinitelyExpandingTypes4.ts, 0, 0)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes4.ts, 0, 16)) // ... groupBy(keySelector: (item: T) => K): Query>; >groupBy : (keySelector: (item: T) => K) => Query>, Symbol(groupBy, Decl(infinitelyExpandingTypes4.ts, 0, 20)) >K : K, Symbol(K, Decl(infinitelyExpandingTypes4.ts, 2, 12)) >keySelector : (item: T) => K, Symbol(keySelector, Decl(infinitelyExpandingTypes4.ts, 2, 15)) >item : T, Symbol(item, Decl(infinitelyExpandingTypes4.ts, 2, 29)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes4.ts, 0, 16)) >K : K, Symbol(K, Decl(infinitelyExpandingTypes4.ts, 2, 12)) >Query : Query, Symbol(Query, Decl(infinitelyExpandingTypes4.ts, 0, 0)) >Grouping : Grouping, Symbol(Grouping, Decl(infinitelyExpandingTypes4.ts, 10, 1)) >K : K, Symbol(K, Decl(infinitelyExpandingTypes4.ts, 2, 12)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes4.ts, 0, 16)) // ... } interface QueryEnumerator { >QueryEnumerator : QueryEnumerator, Symbol(QueryEnumerator, Decl(infinitelyExpandingTypes4.ts, 4, 1)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes4.ts, 6, 26)) // ... groupBy(keySelector: (item: T) => K): QueryEnumerator>; >groupBy : (keySelector: (item: T) => K) => QueryEnumerator>, Symbol(groupBy, Decl(infinitelyExpandingTypes4.ts, 6, 30)) >K : K, Symbol(K, Decl(infinitelyExpandingTypes4.ts, 8, 12)) >keySelector : (item: T) => K, Symbol(keySelector, Decl(infinitelyExpandingTypes4.ts, 8, 15)) >item : T, Symbol(item, Decl(infinitelyExpandingTypes4.ts, 8, 29)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes4.ts, 6, 26)) >K : K, Symbol(K, Decl(infinitelyExpandingTypes4.ts, 8, 12)) >QueryEnumerator : QueryEnumerator, Symbol(QueryEnumerator, Decl(infinitelyExpandingTypes4.ts, 4, 1)) >Grouping : Grouping, Symbol(Grouping, Decl(infinitelyExpandingTypes4.ts, 10, 1)) >K : K, Symbol(K, Decl(infinitelyExpandingTypes4.ts, 8, 12)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes4.ts, 6, 26)) // ... } interface Grouping extends Query { >Grouping : Grouping, Symbol(Grouping, Decl(infinitelyExpandingTypes4.ts, 10, 1)) >K : K, Symbol(K, Decl(infinitelyExpandingTypes4.ts, 12, 19)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes4.ts, 12, 21)) >Query : Query, Symbol(Query, Decl(infinitelyExpandingTypes4.ts, 0, 0)) >T : T, Symbol(T, Decl(infinitelyExpandingTypes4.ts, 12, 21)) key(): K; >key : () => K, Symbol(key, Decl(infinitelyExpandingTypes4.ts, 12, 43)) >K : K, Symbol(K, Decl(infinitelyExpandingTypes4.ts, 12, 19)) } var q1: Query; >q1 : Query, Symbol(q1, Decl(infinitelyExpandingTypes4.ts, 16, 3)) >Query : Query, Symbol(Query, Decl(infinitelyExpandingTypes4.ts, 0, 0)) var q2: QueryEnumerator; >q2 : QueryEnumerator, Symbol(q2, Decl(infinitelyExpandingTypes4.ts, 17, 3)) >QueryEnumerator : QueryEnumerator, Symbol(QueryEnumerator, Decl(infinitelyExpandingTypes4.ts, 4, 1)) var q3: Query; >q3 : Query, Symbol(q3, Decl(infinitelyExpandingTypes4.ts, 18, 3)) >Query : Query, Symbol(Query, Decl(infinitelyExpandingTypes4.ts, 0, 0)) q1 = q2; // should error >q1 = q2 : QueryEnumerator >q1 : Query, Symbol(q1, Decl(infinitelyExpandingTypes4.ts, 16, 3)) >q2 : QueryEnumerator, Symbol(q2, Decl(infinitelyExpandingTypes4.ts, 17, 3)) q1 = q3; // should not error >q1 = q3 : Query >q1 : Query, Symbol(q1, Decl(infinitelyExpandingTypes4.ts, 16, 3)) >q3 : Query, Symbol(q3, Decl(infinitelyExpandingTypes4.ts, 18, 3))