=== tests/cases/compiler/recursiveTypeComparison2.ts === // Before fix this would cause compiler to hang (#1170) declare module Bacon { >Bacon : Symbol(Bacon, Decl(recursiveTypeComparison2.ts, 0, 0)) interface Event { >Event : Symbol(Event, Decl(recursiveTypeComparison2.ts, 2, 22)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 3, 20)) } interface Error extends Event { >Error : Symbol(Error, Decl(recursiveTypeComparison2.ts, 4, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 5, 20)) >Event : Symbol(Event, Decl(recursiveTypeComparison2.ts, 2, 22)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 5, 20)) } interface Observable { >Observable : Symbol(Observable, Decl(recursiveTypeComparison2.ts, 6, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) zip(other: EventStream, f: (a: T, b: U) => V): EventStream; >zip : Symbol(Observable.zip, Decl(recursiveTypeComparison2.ts, 7, 29)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 8, 12)) >V : Symbol(V, Decl(recursiveTypeComparison2.ts, 8, 14)) >other : Symbol(other, Decl(recursiveTypeComparison2.ts, 8, 18)) >EventStream : Symbol(EventStream, Decl(recursiveTypeComparison2.ts, 21, 5)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 8, 12)) >f : Symbol(f, Decl(recursiveTypeComparison2.ts, 8, 40)) >a : Symbol(a, Decl(recursiveTypeComparison2.ts, 8, 45)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) >b : Symbol(b, Decl(recursiveTypeComparison2.ts, 8, 50)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 8, 12)) >V : Symbol(V, Decl(recursiveTypeComparison2.ts, 8, 14)) >EventStream : Symbol(EventStream, Decl(recursiveTypeComparison2.ts, 21, 5)) >V : Symbol(V, Decl(recursiveTypeComparison2.ts, 8, 14)) slidingWindow(max: number, min?: number): Property; >slidingWindow : Symbol(Observable.slidingWindow, Decl(recursiveTypeComparison2.ts, 8, 79)) >max : Symbol(max, Decl(recursiveTypeComparison2.ts, 9, 22)) >min : Symbol(min, Decl(recursiveTypeComparison2.ts, 9, 34)) >Property : Symbol(Property, Decl(recursiveTypeComparison2.ts, 19, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) log(): Observable; >log : Symbol(Observable.log, Decl(recursiveTypeComparison2.ts, 9, 64)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison2.ts, 6, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) combine(other: Observable, f: (a: T, b: U) => V): Property; >combine : Symbol(Observable.combine, Decl(recursiveTypeComparison2.ts, 10, 29)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 11, 16)) >V : Symbol(V, Decl(recursiveTypeComparison2.ts, 11, 18)) >other : Symbol(other, Decl(recursiveTypeComparison2.ts, 11, 22)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison2.ts, 6, 5)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 11, 16)) >f : Symbol(f, Decl(recursiveTypeComparison2.ts, 11, 43)) >a : Symbol(a, Decl(recursiveTypeComparison2.ts, 11, 48)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) >b : Symbol(b, Decl(recursiveTypeComparison2.ts, 11, 53)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 11, 16)) >V : Symbol(V, Decl(recursiveTypeComparison2.ts, 11, 18)) >Property : Symbol(Property, Decl(recursiveTypeComparison2.ts, 19, 5)) >V : Symbol(V, Decl(recursiveTypeComparison2.ts, 11, 18)) withStateMachine(initState: U, f: (state: U, event: Event) => StateValue): EventStream; >withStateMachine : Symbol(Observable.withStateMachine, Decl(recursiveTypeComparison2.ts, 11, 79)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 12, 25)) >V : Symbol(V, Decl(recursiveTypeComparison2.ts, 12, 27)) >initState : Symbol(initState, Decl(recursiveTypeComparison2.ts, 12, 31)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 12, 25)) >f : Symbol(f, Decl(recursiveTypeComparison2.ts, 12, 44)) >state : Symbol(state, Decl(recursiveTypeComparison2.ts, 12, 49)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 12, 25)) >event : Symbol(event, Decl(recursiveTypeComparison2.ts, 12, 58)) >Event : Symbol(Event, Decl(recursiveTypeComparison2.ts, 2, 22)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) >StateValue : Symbol(StateValue) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 12, 25)) >V : Symbol(V, Decl(recursiveTypeComparison2.ts, 12, 27)) >EventStream : Symbol(EventStream, Decl(recursiveTypeComparison2.ts, 21, 5)) >V : Symbol(V, Decl(recursiveTypeComparison2.ts, 12, 27)) decode(mapping: Object): Property; >decode : Symbol(Observable.decode, Decl(recursiveTypeComparison2.ts, 12, 113)) >mapping : Symbol(mapping, Decl(recursiveTypeComparison2.ts, 13, 15)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >Property : Symbol(Property, Decl(recursiveTypeComparison2.ts, 19, 5)) awaiting(other: Observable): Property; >awaiting : Symbol(Observable.awaiting, Decl(recursiveTypeComparison2.ts, 13, 47)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 14, 17)) >other : Symbol(other, Decl(recursiveTypeComparison2.ts, 14, 20)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison2.ts, 6, 5)) >U : Symbol(U, Decl(recursiveTypeComparison2.ts, 14, 17)) >Property : Symbol(Property, Decl(recursiveTypeComparison2.ts, 19, 5)) endOnError(f?: (value: T) => boolean): Observable; >endOnError : Symbol(Observable.endOnError, Decl(recursiveTypeComparison2.ts, 14, 61)) >f : Symbol(f, Decl(recursiveTypeComparison2.ts, 15, 19)) >value : Symbol(value, Decl(recursiveTypeComparison2.ts, 15, 24)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison2.ts, 6, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) withHandler(f: (event: Event) => any): Observable; >withHandler : Symbol(Observable.withHandler, Decl(recursiveTypeComparison2.ts, 15, 61)) >f : Symbol(f, Decl(recursiveTypeComparison2.ts, 16, 20)) >event : Symbol(event, Decl(recursiveTypeComparison2.ts, 16, 24)) >Event : Symbol(Event, Decl(recursiveTypeComparison2.ts, 2, 22)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison2.ts, 6, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) name(name: string): Observable; >name : Symbol(Observable.name, Decl(recursiveTypeComparison2.ts, 16, 64)) >name : Symbol(name, Decl(recursiveTypeComparison2.ts, 17, 13)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison2.ts, 6, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) withDescription(...args: any[]): Observable; >withDescription : Symbol(Observable.withDescription, Decl(recursiveTypeComparison2.ts, 17, 42)) >args : Symbol(args, Decl(recursiveTypeComparison2.ts, 18, 24)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison2.ts, 6, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 7, 25)) } interface Property extends Observable { >Property : Symbol(Property, Decl(recursiveTypeComparison2.ts, 19, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 20, 23)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison2.ts, 6, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 20, 23)) } interface EventStream extends Observable { >EventStream : Symbol(EventStream, Decl(recursiveTypeComparison2.ts, 21, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 22, 26)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison2.ts, 6, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 22, 26)) } interface Bus extends EventStream { >Bus : Symbol(Bus, Decl(recursiveTypeComparison2.ts, 23, 5), Decl(recursiveTypeComparison2.ts, 26, 7)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 24, 18)) >EventStream : Symbol(EventStream, Decl(recursiveTypeComparison2.ts, 21, 5)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 24, 18)) } var Bus: new () => Bus; >Bus : Symbol(Bus, Decl(recursiveTypeComparison2.ts, 23, 5), Decl(recursiveTypeComparison2.ts, 26, 7)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 26, 18)) >Bus : Symbol(Bus, Decl(recursiveTypeComparison2.ts, 23, 5), Decl(recursiveTypeComparison2.ts, 26, 7)) >T : Symbol(T, Decl(recursiveTypeComparison2.ts, 26, 18)) } var stuck: Bacon.Bus = new Bacon.Bus(); >stuck : Symbol(stuck, Decl(recursiveTypeComparison2.ts, 29, 3)) >Bacon : Symbol(Bacon, Decl(recursiveTypeComparison2.ts, 0, 0)) >Bus : Symbol(Bacon.Bus, Decl(recursiveTypeComparison2.ts, 23, 5), Decl(recursiveTypeComparison2.ts, 26, 7)) >Bacon.Bus : Symbol(Bacon.Bus, Decl(recursiveTypeComparison2.ts, 23, 5), Decl(recursiveTypeComparison2.ts, 26, 7)) >Bacon : Symbol(Bacon, Decl(recursiveTypeComparison2.ts, 0, 0)) >Bus : Symbol(Bacon.Bus, Decl(recursiveTypeComparison2.ts, 23, 5), Decl(recursiveTypeComparison2.ts, 26, 7))