Skip to content

Commit 9a1b031

Browse files
committed
Accepting new baselines.
1 parent 100e1c8 commit 9a1b031

File tree

4 files changed

+136
-0
lines changed

4 files changed

+136
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//// [recursiveTypeComparison.ts]
2+
// Before fix this would take an exceeding long time to complete (#1170)
3+
4+
interface Observable<T> {
5+
// This member can't be of type T, Property<T>, or Observable<anything but T>
6+
needThisOne: Observable<T>;
7+
// Add more to make it slower
8+
expo1: Property<T[]>; // 0.31 seconds in check
9+
expo2: Property<T[]>; // 3.11 seconds
10+
expo3: Property<T[]>; // 82.28 seconds
11+
}
12+
interface Property<T> extends Observable<T> { }
13+
14+
var p: Observable<{}>;
15+
var stuck: Property<number> = p;
16+
17+
18+
//// [recursiveTypeComparison.js]
19+
// Before fix this would take an exceeding long time to complete (#1170)
20+
var p;
21+
var stuck = p;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
=== tests/cases/compiler/recursiveTypeComparison.ts ===
2+
// Before fix this would take an exceeding long time to complete (#1170)
3+
4+
interface Observable<T> {
5+
>Observable : Observable<T>
6+
>T : T
7+
8+
// This member can't be of type T, Property<T>, or Observable<anything but T>
9+
needThisOne: Observable<T>;
10+
>needThisOne : Observable<T>
11+
>Observable : Observable<T>
12+
>T : T
13+
14+
// Add more to make it slower
15+
expo1: Property<T[]>; // 0.31 seconds in check
16+
>expo1 : Property<T[]>
17+
>Property : Property<T>
18+
>T : T
19+
20+
expo2: Property<T[]>; // 3.11 seconds
21+
>expo2 : Property<T[]>
22+
>Property : Property<T>
23+
>T : T
24+
25+
expo3: Property<T[]>; // 82.28 seconds
26+
>expo3 : Property<T[]>
27+
>Property : Property<T>
28+
>T : T
29+
}
30+
interface Property<T> extends Observable<T> { }
31+
>Property : Property<T>
32+
>T : T
33+
>Observable : Observable<T>
34+
>T : T
35+
36+
var p: Observable<{}>;
37+
>p : Observable<{}>
38+
>Observable : Observable<T>
39+
40+
var stuck: Property<number> = p;
41+
>stuck : Property<number>
42+
>Property : Property<T>
43+
>p : Observable<{}>
44+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
tests/cases/compiler/recursiveTypeComparison2.ts(13,80): error TS2304: Cannot find name 'StateValue'.
2+
3+
4+
==== tests/cases/compiler/recursiveTypeComparison2.ts (1 errors) ====
5+
// Before fix this would cause compiler to hang (#1170)
6+
7+
declare module Bacon {
8+
interface Event<T> {
9+
}
10+
interface Error<T> extends Event<T> {
11+
}
12+
interface Observable<T> {
13+
zip<U, V>(other: EventStream<U>, f: (a: T, b: U) => V): EventStream<V>;
14+
slidingWindow(max: number, min?: number): Property<T[]>;
15+
log(): Observable<T>;
16+
combine<U, V>(other: Observable<U>, f: (a: T, b: U) => V): Property<V>;
17+
withStateMachine<U, V>(initState: U, f: (state: U, event: Event<T>) => StateValue<U, V>): EventStream<V>;
18+
~~~~~~~~~~~~~~~~
19+
!!! error TS2304: Cannot find name 'StateValue'.
20+
decode(mapping: Object): Property<any>;
21+
awaiting<U>(other: Observable<U>): Property<boolean>;
22+
endOnError(f?: (value: T) => boolean): Observable<T>;
23+
withHandler(f: (event: Event<T>) => any): Observable<T>;
24+
name(name: string): Observable<T>;
25+
withDescription(...args: any[]): Observable<T>;
26+
}
27+
interface Property<T> extends Observable<T> {
28+
}
29+
interface EventStream<T> extends Observable<T> {
30+
}
31+
interface Bus<T> extends EventStream<T> {
32+
}
33+
var Bus: new <T>() => Bus<T>;
34+
}
35+
36+
var stuck: Bacon.Bus<number> = new Bacon.Bus();
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//// [recursiveTypeComparison2.ts]
2+
// Before fix this would cause compiler to hang (#1170)
3+
4+
declare module Bacon {
5+
interface Event<T> {
6+
}
7+
interface Error<T> extends Event<T> {
8+
}
9+
interface Observable<T> {
10+
zip<U, V>(other: EventStream<U>, f: (a: T, b: U) => V): EventStream<V>;
11+
slidingWindow(max: number, min?: number): Property<T[]>;
12+
log(): Observable<T>;
13+
combine<U, V>(other: Observable<U>, f: (a: T, b: U) => V): Property<V>;
14+
withStateMachine<U, V>(initState: U, f: (state: U, event: Event<T>) => StateValue<U, V>): EventStream<V>;
15+
decode(mapping: Object): Property<any>;
16+
awaiting<U>(other: Observable<U>): Property<boolean>;
17+
endOnError(f?: (value: T) => boolean): Observable<T>;
18+
withHandler(f: (event: Event<T>) => any): Observable<T>;
19+
name(name: string): Observable<T>;
20+
withDescription(...args: any[]): Observable<T>;
21+
}
22+
interface Property<T> extends Observable<T> {
23+
}
24+
interface EventStream<T> extends Observable<T> {
25+
}
26+
interface Bus<T> extends EventStream<T> {
27+
}
28+
var Bus: new <T>() => Bus<T>;
29+
}
30+
31+
var stuck: Bacon.Bus<number> = new Bacon.Bus();
32+
33+
//// [recursiveTypeComparison2.js]
34+
// Before fix this would cause compiler to hang (#1170)
35+
var stuck = new Bacon.Bus();

0 commit comments

Comments
 (0)