diff --git a/tests/baselines/reference/recursiveTypeComparison.js b/tests/baselines/reference/recursiveTypeComparison.js new file mode 100644 index 0000000000..8195360de1 --- /dev/null +++ b/tests/baselines/reference/recursiveTypeComparison.js @@ -0,0 +1,21 @@ +//// [recursiveTypeComparison.ts] +// Before fix this would take an exceeding long time to complete (#1170) + +interface Observable { + // This member can't be of type T, Property, or Observable + needThisOne: Observable; + // Add more to make it slower + expo1: Property; // 0.31 seconds in check + expo2: Property; // 3.11 seconds + expo3: Property; // 82.28 seconds +} +interface Property extends Observable { } + +var p: Observable<{}>; +var stuck: Property = p; + + +//// [recursiveTypeComparison.js] +// Before fix this would take an exceeding long time to complete (#1170) +var p; +var stuck = p; diff --git a/tests/baselines/reference/recursiveTypeComparison.types b/tests/baselines/reference/recursiveTypeComparison.types new file mode 100644 index 0000000000..5504de74d8 --- /dev/null +++ b/tests/baselines/reference/recursiveTypeComparison.types @@ -0,0 +1,44 @@ +=== tests/cases/compiler/recursiveTypeComparison.ts === +// Before fix this would take an exceeding long time to complete (#1170) + +interface Observable { +>Observable : Observable +>T : T + + // This member can't be of type T, Property, or Observable + needThisOne: Observable; +>needThisOne : Observable +>Observable : Observable +>T : T + + // Add more to make it slower + expo1: Property; // 0.31 seconds in check +>expo1 : Property +>Property : Property +>T : T + + expo2: Property; // 3.11 seconds +>expo2 : Property +>Property : Property +>T : T + + expo3: Property; // 82.28 seconds +>expo3 : Property +>Property : Property +>T : T +} +interface Property extends Observable { } +>Property : Property +>T : T +>Observable : Observable +>T : T + +var p: Observable<{}>; +>p : Observable<{}> +>Observable : Observable + +var stuck: Property = p; +>stuck : Property +>Property : Property +>p : Observable<{}> + diff --git a/tests/baselines/reference/recursiveTypeComparison2.errors.txt b/tests/baselines/reference/recursiveTypeComparison2.errors.txt new file mode 100644 index 0000000000..ce6311c008 --- /dev/null +++ b/tests/baselines/reference/recursiveTypeComparison2.errors.txt @@ -0,0 +1,36 @@ +tests/cases/compiler/recursiveTypeComparison2.ts(13,80): error TS2304: Cannot find name 'StateValue'. + + +==== tests/cases/compiler/recursiveTypeComparison2.ts (1 errors) ==== + // Before fix this would cause compiler to hang (#1170) + + declare module Bacon { + interface Event { + } + interface Error extends Event { + } + interface Observable { + zip(other: EventStream, f: (a: T, b: U) => V): EventStream; + slidingWindow(max: number, min?: number): Property; + log(): Observable; + combine(other: Observable, f: (a: T, b: U) => V): Property; + withStateMachine(initState: U, f: (state: U, event: Event) => StateValue): EventStream; + ~~~~~~~~~~~~~~~~ +!!! error TS2304: Cannot find name 'StateValue'. + decode(mapping: Object): Property; + awaiting(other: Observable): Property; + endOnError(f?: (value: T) => boolean): Observable; + withHandler(f: (event: Event) => any): Observable; + name(name: string): Observable; + withDescription(...args: any[]): Observable; + } + interface Property extends Observable { + } + interface EventStream extends Observable { + } + interface Bus extends EventStream { + } + var Bus: new () => Bus; + } + + var stuck: Bacon.Bus = new Bacon.Bus(); \ No newline at end of file diff --git a/tests/baselines/reference/recursiveTypeComparison2.js b/tests/baselines/reference/recursiveTypeComparison2.js new file mode 100644 index 0000000000..5844ff3be4 --- /dev/null +++ b/tests/baselines/reference/recursiveTypeComparison2.js @@ -0,0 +1,35 @@ +//// [recursiveTypeComparison2.ts] +// Before fix this would cause compiler to hang (#1170) + +declare module Bacon { + interface Event { + } + interface Error extends Event { + } + interface Observable { + zip(other: EventStream, f: (a: T, b: U) => V): EventStream; + slidingWindow(max: number, min?: number): Property; + log(): Observable; + combine(other: Observable, f: (a: T, b: U) => V): Property; + withStateMachine(initState: U, f: (state: U, event: Event) => StateValue): EventStream; + decode(mapping: Object): Property; + awaiting(other: Observable): Property; + endOnError(f?: (value: T) => boolean): Observable; + withHandler(f: (event: Event) => any): Observable; + name(name: string): Observable; + withDescription(...args: any[]): Observable; + } + interface Property extends Observable { + } + interface EventStream extends Observable { + } + interface Bus extends EventStream { + } + var Bus: new () => Bus; +} + +var stuck: Bacon.Bus = new Bacon.Bus(); + +//// [recursiveTypeComparison2.js] +// Before fix this would cause compiler to hang (#1170) +var stuck = new Bacon.Bus();