=== tests/cases/compiler/infinitelyExpandingTypes4.ts === interface Query { >Query : Query >T : T // ... groupBy(keySelector: (item: T) => K): Query>; >groupBy : (keySelector: (item: T) => K) => Query> >K : K >keySelector : (item: T) => K >item : T >T : T >K : K >Query : Query >Grouping : Grouping >K : K >T : T // ... } interface QueryEnumerator { >QueryEnumerator : QueryEnumerator >T : T // ... groupBy(keySelector: (item: T) => K): QueryEnumerator>; >groupBy : (keySelector: (item: T) => K) => QueryEnumerator> >K : K >keySelector : (item: T) => K >item : T >T : T >K : K >QueryEnumerator : QueryEnumerator >Grouping : Grouping >K : K >T : T // ... } interface Grouping extends Query { >Grouping : Grouping >K : K >T : T >Query : Query >T : T key(): K; >key : () => K >K : K } var q1: Query; >q1 : Query >Query : Query var q2: QueryEnumerator; >q2 : QueryEnumerator >QueryEnumerator : QueryEnumerator var q3: Query; >q3 : Query >Query : Query q1 = q2; // should error >q1 = q2 : QueryEnumerator >q1 : Query >q2 : QueryEnumerator q1 = q3; // should not error >q1 = q3 : Query >q1 : Query >q3 : Query