=== tests/cases/compiler/infinitelyExpandingTypes5.ts === interface Query { >Query : Query >T : T foo(x: T): Query; >foo : (x: T) => Query >x : T >T : T >Query : Query >T : T } interface Enumerator { >Enumerator : Enumerator >T : T (action: (item: T, index: number) => boolean): boolean; >action : (item: T, index: number) => boolean >item : T >T : T >index : number } function from(array: T[]): Query; >from : { (array: T[]): Query; (enumerator: Enumerator): Query; } >T : T >array : T[] >T : T >Query : Query >T : T function from(enumerator: Enumerator): Query; >from : { (array: T[]): Query; (enumerator: Enumerator): Query; } >T : T >enumerator : Enumerator >Enumerator : Enumerator >T : T >Query : Query >T : T function from(arg: any): any { >from : { (array: T[]): Query; (enumerator: Enumerator): Query; } >arg : any return undefined; >undefined : undefined }