(one: a, two: b): [a, b] {
->of2 : Symbol(of2, Decl(genericFunctionInference1.ts, 109, 44))
->a : Symbol(a, Decl(genericFunctionInference1.ts, 113, 13))
->b : Symbol(b, Decl(genericFunctionInference1.ts, 113, 15))
->one : Symbol(one, Decl(genericFunctionInference1.ts, 113, 19))
->a : Symbol(a, Decl(genericFunctionInference1.ts, 113, 13))
->two : Symbol(two, Decl(genericFunctionInference1.ts, 113, 26))
->b : Symbol(b, Decl(genericFunctionInference1.ts, 113, 15))
->a : Symbol(a, Decl(genericFunctionInference1.ts, 113, 13))
->b : Symbol(b, Decl(genericFunctionInference1.ts, 113, 15))
+>of2 : Symbol(of2, Decl(genericFunctionInference1.ts, 156, 44))
+>a : Symbol(a, Decl(genericFunctionInference1.ts, 160, 13))
+>b : Symbol(b, Decl(genericFunctionInference1.ts, 160, 15))
+>one : Symbol(one, Decl(genericFunctionInference1.ts, 160, 19))
+>a : Symbol(a, Decl(genericFunctionInference1.ts, 160, 13))
+>two : Symbol(two, Decl(genericFunctionInference1.ts, 160, 26))
+>b : Symbol(b, Decl(genericFunctionInference1.ts, 160, 15))
+>a : Symbol(a, Decl(genericFunctionInference1.ts, 160, 13))
+>b : Symbol(b, Decl(genericFunctionInference1.ts, 160, 15))
return [one, two];
->one : Symbol(one, Decl(genericFunctionInference1.ts, 113, 19))
->two : Symbol(two, Decl(genericFunctionInference1.ts, 113, 26))
+>one : Symbol(one, Decl(genericFunctionInference1.ts, 160, 19))
+>two : Symbol(two, Decl(genericFunctionInference1.ts, 160, 26))
}
const flipped = flip(of2);
->flipped : Symbol(flipped, Decl(genericFunctionInference1.ts, 117, 5))
->flip : Symbol(flip, Decl(genericFunctionInference1.ts, 87, 20))
->of2 : Symbol(of2, Decl(genericFunctionInference1.ts, 109, 44))
+>flipped : Symbol(flipped, Decl(genericFunctionInference1.ts, 164, 5))
+>flip : Symbol(flip, Decl(genericFunctionInference1.ts, 134, 20))
+>of2 : Symbol(of2, Decl(genericFunctionInference1.ts, 156, 44))
// #29904.1
type Component = (props: P) => {};
->Component : Symbol(Component, Decl(genericFunctionInference1.ts, 117, 26))
->P : Symbol(P, Decl(genericFunctionInference1.ts, 121, 15))
->props : Symbol(props, Decl(genericFunctionInference1.ts, 121, 21))
->P : Symbol(P, Decl(genericFunctionInference1.ts, 121, 15))
+>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 164, 26))
+>P : Symbol(P, Decl(genericFunctionInference1.ts, 168, 15))
+>props : Symbol(props, Decl(genericFunctionInference1.ts, 168, 21))
+>P : Symbol(P, Decl(genericFunctionInference1.ts, 168, 15))
declare const myHoc1:
(C: Component
) => Component
;
->myHoc1 : Symbol(myHoc1, Decl(genericFunctionInference1.ts, 123, 13))
->P : Symbol(P, Decl(genericFunctionInference1.ts, 123, 23))
->C : Symbol(C, Decl(genericFunctionInference1.ts, 123, 26))
->Component : Symbol(Component, Decl(genericFunctionInference1.ts, 117, 26))
->P : Symbol(P, Decl(genericFunctionInference1.ts, 123, 23))
->Component : Symbol(Component, Decl(genericFunctionInference1.ts, 117, 26))
->P : Symbol(P, Decl(genericFunctionInference1.ts, 123, 23))
+>myHoc1 : Symbol(myHoc1, Decl(genericFunctionInference1.ts, 170, 13))
+>P : Symbol(P, Decl(genericFunctionInference1.ts, 170, 23))
+>C : Symbol(C, Decl(genericFunctionInference1.ts, 170, 26))
+>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 164, 26))
+>P : Symbol(P, Decl(genericFunctionInference1.ts, 170, 23))
+>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 164, 26))
+>P : Symbol(P, Decl(genericFunctionInference1.ts, 170, 23))
declare const myHoc2:
(C: Component
) => Component
;
->myHoc2 : Symbol(myHoc2, Decl(genericFunctionInference1.ts, 124, 13))
->P : Symbol(P, Decl(genericFunctionInference1.ts, 124, 23))
->C : Symbol(C, Decl(genericFunctionInference1.ts, 124, 26))
->Component : Symbol(Component, Decl(genericFunctionInference1.ts, 117, 26))
->P : Symbol(P, Decl(genericFunctionInference1.ts, 124, 23))
->Component : Symbol(Component, Decl(genericFunctionInference1.ts, 117, 26))
->P : Symbol(P, Decl(genericFunctionInference1.ts, 124, 23))
+>myHoc2 : Symbol(myHoc2, Decl(genericFunctionInference1.ts, 171, 13))
+>P : Symbol(P, Decl(genericFunctionInference1.ts, 171, 23))
+>C : Symbol(C, Decl(genericFunctionInference1.ts, 171, 26))
+>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 164, 26))
+>P : Symbol(P, Decl(genericFunctionInference1.ts, 171, 23))
+>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 164, 26))
+>P : Symbol(P, Decl(genericFunctionInference1.ts, 171, 23))
declare const MyComponent1: Component<{ foo: 1 }>;
->MyComponent1 : Symbol(MyComponent1, Decl(genericFunctionInference1.ts, 126, 13))
->Component : Symbol(Component, Decl(genericFunctionInference1.ts, 117, 26))
->foo : Symbol(foo, Decl(genericFunctionInference1.ts, 126, 39))
+>MyComponent1 : Symbol(MyComponent1, Decl(genericFunctionInference1.ts, 173, 13))
+>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 164, 26))
+>foo : Symbol(foo, Decl(genericFunctionInference1.ts, 173, 39))
const enhance = pipe(
->enhance : Symbol(enhance, Decl(genericFunctionInference1.ts, 128, 5))
+>enhance : Symbol(enhance, Decl(genericFunctionInference1.ts, 175, 5))
>pipe : Symbol(pipe, Decl(genericFunctionInference1.ts, 0, 0), Decl(genericFunctionInference1.ts, 0, 84), Decl(genericFunctionInference1.ts, 1, 104))
myHoc1,
->myHoc1 : Symbol(myHoc1, Decl(genericFunctionInference1.ts, 123, 13))
+>myHoc1 : Symbol(myHoc1, Decl(genericFunctionInference1.ts, 170, 13))
myHoc2,
->myHoc2 : Symbol(myHoc2, Decl(genericFunctionInference1.ts, 124, 13))
+>myHoc2 : Symbol(myHoc2, Decl(genericFunctionInference1.ts, 171, 13))
);
const MyComponent2 = enhance(MyComponent1);
->MyComponent2 : Symbol(MyComponent2, Decl(genericFunctionInference1.ts, 133, 5))
->enhance : Symbol(enhance, Decl(genericFunctionInference1.ts, 128, 5))
->MyComponent1 : Symbol(MyComponent1, Decl(genericFunctionInference1.ts, 126, 13))
+>MyComponent2 : Symbol(MyComponent2, Decl(genericFunctionInference1.ts, 180, 5))
+>enhance : Symbol(enhance, Decl(genericFunctionInference1.ts, 175, 5))
+>MyComponent1 : Symbol(MyComponent1, Decl(genericFunctionInference1.ts, 173, 13))
// #29904.2
const fn20 = pipe((_a?: {}) => 1);
->fn20 : Symbol(fn20, Decl(genericFunctionInference1.ts, 137, 5))
+>fn20 : Symbol(fn20, Decl(genericFunctionInference1.ts, 184, 5))
>pipe : Symbol(pipe, Decl(genericFunctionInference1.ts, 0, 0), Decl(genericFunctionInference1.ts, 0, 84), Decl(genericFunctionInference1.ts, 1, 104))
->_a : Symbol(_a, Decl(genericFunctionInference1.ts, 137, 19))
+>_a : Symbol(_a, Decl(genericFunctionInference1.ts, 184, 19))
// #29904.3
type Fn = (n: number) => number;
->Fn : Symbol(Fn, Decl(genericFunctionInference1.ts, 137, 34))
->n : Symbol(n, Decl(genericFunctionInference1.ts, 141, 11))
+>Fn : Symbol(Fn, Decl(genericFunctionInference1.ts, 184, 34))
+>n : Symbol(n, Decl(genericFunctionInference1.ts, 188, 11))
const fn30: Fn = pipe(
->fn30 : Symbol(fn30, Decl(genericFunctionInference1.ts, 142, 5))
->Fn : Symbol(Fn, Decl(genericFunctionInference1.ts, 137, 34))
+>fn30 : Symbol(fn30, Decl(genericFunctionInference1.ts, 189, 5))
+>Fn : Symbol(Fn, Decl(genericFunctionInference1.ts, 184, 34))
>pipe : Symbol(pipe, Decl(genericFunctionInference1.ts, 0, 0), Decl(genericFunctionInference1.ts, 0, 84), Decl(genericFunctionInference1.ts, 1, 104))
x => x + 1,
->x : Symbol(x, Decl(genericFunctionInference1.ts, 142, 22))
->x : Symbol(x, Decl(genericFunctionInference1.ts, 142, 22))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 189, 22))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 189, 22))
x => x * 2,
->x : Symbol(x, Decl(genericFunctionInference1.ts, 143, 15))
->x : Symbol(x, Decl(genericFunctionInference1.ts, 143, 15))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 190, 15))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 190, 15))
);
const promise = Promise.resolve(1);
->promise : Symbol(promise, Decl(genericFunctionInference1.ts, 147, 5))
+>promise : Symbol(promise, Decl(genericFunctionInference1.ts, 194, 5))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
promise.then(
>promise.then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --))
->promise : Symbol(promise, Decl(genericFunctionInference1.ts, 147, 5))
+>promise : Symbol(promise, Decl(genericFunctionInference1.ts, 194, 5))
>then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --))
pipe(
>pipe : Symbol(pipe, Decl(genericFunctionInference1.ts, 0, 0), Decl(genericFunctionInference1.ts, 0, 84), Decl(genericFunctionInference1.ts, 1, 104))
x => x + 1,
->x : Symbol(x, Decl(genericFunctionInference1.ts, 149, 9))
->x : Symbol(x, Decl(genericFunctionInference1.ts, 149, 9))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 196, 9))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 196, 9))
x => x * 2,
->x : Symbol(x, Decl(genericFunctionInference1.ts, 150, 19))
->x : Symbol(x, Decl(genericFunctionInference1.ts, 150, 19))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 197, 19))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 197, 19))
),
);
@@ -797,137 +947,137 @@ promise.then(
// #29904.4
declare const getString: () => string;
->getString : Symbol(getString, Decl(genericFunctionInference1.ts, 157, 13))
+>getString : Symbol(getString, Decl(genericFunctionInference1.ts, 204, 13))
declare const orUndefined: (name: string) => string | undefined;
->orUndefined : Symbol(orUndefined, Decl(genericFunctionInference1.ts, 158, 13))
->name : Symbol(name, Decl(genericFunctionInference1.ts, 158, 28))
+>orUndefined : Symbol(orUndefined, Decl(genericFunctionInference1.ts, 205, 13))
+>name : Symbol(name, Decl(genericFunctionInference1.ts, 205, 28))
declare const identity: (value: T) => T;
->identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 159, 25))
->value : Symbol(value, Decl(genericFunctionInference1.ts, 159, 28))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 159, 25))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 159, 25))
+>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 206, 13))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 206, 25))
+>value : Symbol(value, Decl(genericFunctionInference1.ts, 206, 28))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 206, 25))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 206, 25))
const fn40 = pipe(
->fn40 : Symbol(fn40, Decl(genericFunctionInference1.ts, 161, 5))
+>fn40 : Symbol(fn40, Decl(genericFunctionInference1.ts, 208, 5))
>pipe : Symbol(pipe, Decl(genericFunctionInference1.ts, 0, 0), Decl(genericFunctionInference1.ts, 0, 84), Decl(genericFunctionInference1.ts, 1, 104))
getString,
->getString : Symbol(getString, Decl(genericFunctionInference1.ts, 157, 13))
+>getString : Symbol(getString, Decl(genericFunctionInference1.ts, 204, 13))
string => orUndefined(string),
->string : Symbol(string, Decl(genericFunctionInference1.ts, 162, 14))
->orUndefined : Symbol(orUndefined, Decl(genericFunctionInference1.ts, 158, 13))
->string : Symbol(string, Decl(genericFunctionInference1.ts, 162, 14))
+>string : Symbol(string, Decl(genericFunctionInference1.ts, 209, 14))
+>orUndefined : Symbol(orUndefined, Decl(genericFunctionInference1.ts, 205, 13))
+>string : Symbol(string, Decl(genericFunctionInference1.ts, 209, 14))
identity,
->identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
+>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 206, 13))
);
// #29904.6
declare const getArray: () => string[];
->getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 169, 13))
+>getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 216, 13))
declare const first: (ts: T[]) => T;
->first : Symbol(first, Decl(genericFunctionInference1.ts, 170, 13))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 170, 22))
->ts : Symbol(ts, Decl(genericFunctionInference1.ts, 170, 25))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 170, 22))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 170, 22))
+>first : Symbol(first, Decl(genericFunctionInference1.ts, 217, 13))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 217, 22))
+>ts : Symbol(ts, Decl(genericFunctionInference1.ts, 217, 25))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 217, 22))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 217, 22))
const fn60 = pipe(
->fn60 : Symbol(fn60, Decl(genericFunctionInference1.ts, 172, 5))
+>fn60 : Symbol(fn60, Decl(genericFunctionInference1.ts, 219, 5))
>pipe : Symbol(pipe, Decl(genericFunctionInference1.ts, 0, 0), Decl(genericFunctionInference1.ts, 0, 84), Decl(genericFunctionInference1.ts, 1, 104))
getArray,
->getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 169, 13))
+>getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 216, 13))
x => x,
->x : Symbol(x, Decl(genericFunctionInference1.ts, 173, 13))
->x : Symbol(x, Decl(genericFunctionInference1.ts, 173, 13))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 220, 13))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 220, 13))
first,
->first : Symbol(first, Decl(genericFunctionInference1.ts, 170, 13))
+>first : Symbol(first, Decl(genericFunctionInference1.ts, 217, 13))
);
const fn61 = pipe(
->fn61 : Symbol(fn61, Decl(genericFunctionInference1.ts, 178, 5))
+>fn61 : Symbol(fn61, Decl(genericFunctionInference1.ts, 225, 5))
>pipe : Symbol(pipe, Decl(genericFunctionInference1.ts, 0, 0), Decl(genericFunctionInference1.ts, 0, 84), Decl(genericFunctionInference1.ts, 1, 104))
getArray,
->getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 169, 13))
+>getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 216, 13))
identity,
->identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
+>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 206, 13))
first,
->first : Symbol(first, Decl(genericFunctionInference1.ts, 170, 13))
+>first : Symbol(first, Decl(genericFunctionInference1.ts, 217, 13))
);
const fn62 = pipe(
->fn62 : Symbol(fn62, Decl(genericFunctionInference1.ts, 184, 5))
+>fn62 : Symbol(fn62, Decl(genericFunctionInference1.ts, 231, 5))
>pipe : Symbol(pipe, Decl(genericFunctionInference1.ts, 0, 0), Decl(genericFunctionInference1.ts, 0, 84), Decl(genericFunctionInference1.ts, 1, 104))
getArray,
->getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 169, 13))
+>getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 216, 13))
x => x,
->x : Symbol(x, Decl(genericFunctionInference1.ts, 185, 13))
->x : Symbol(x, Decl(genericFunctionInference1.ts, 185, 13))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 232, 13))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 232, 13))
x => first(x),
->x : Symbol(x, Decl(genericFunctionInference1.ts, 186, 11))
->first : Symbol(first, Decl(genericFunctionInference1.ts, 170, 13))
->x : Symbol(x, Decl(genericFunctionInference1.ts, 186, 11))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 233, 11))
+>first : Symbol(first, Decl(genericFunctionInference1.ts, 217, 13))
+>x : Symbol(x, Decl(genericFunctionInference1.ts, 233, 11))
);
// Repro from #30297
declare function foo2(fn: T, a?: U, b?: U): [T, U];
->foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 188, 2))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 192, 22))
->U : Symbol(U, Decl(genericFunctionInference1.ts, 192, 24))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 192, 22))
->fn : Symbol(fn, Decl(genericFunctionInference1.ts, 192, 32))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 192, 22))
->a : Symbol(a, Decl(genericFunctionInference1.ts, 192, 38))
->U : Symbol(U, Decl(genericFunctionInference1.ts, 192, 24))
->b : Symbol(b, Decl(genericFunctionInference1.ts, 192, 45))
->U : Symbol(U, Decl(genericFunctionInference1.ts, 192, 24))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 192, 22))
->U : Symbol(U, Decl(genericFunctionInference1.ts, 192, 24))
+>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 235, 2))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 239, 22))
+>U : Symbol(U, Decl(genericFunctionInference1.ts, 239, 24))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 239, 22))
+>fn : Symbol(fn, Decl(genericFunctionInference1.ts, 239, 32))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 239, 22))
+>a : Symbol(a, Decl(genericFunctionInference1.ts, 239, 38))
+>U : Symbol(U, Decl(genericFunctionInference1.ts, 239, 24))
+>b : Symbol(b, Decl(genericFunctionInference1.ts, 239, 45))
+>U : Symbol(U, Decl(genericFunctionInference1.ts, 239, 24))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 239, 22))
+>U : Symbol(U, Decl(genericFunctionInference1.ts, 239, 24))
foo2(() => {});
->foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 188, 2))
+>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 235, 2))
foo2(identity);
->foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 188, 2))
->identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
+>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 235, 2))
+>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 206, 13))
foo2(identity, 1);
->foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 188, 2))
->identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
+>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 235, 2))
+>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 206, 13))
// Repro from #30324
declare function times(fn: (i: number) => T): (n: number) => T[];
->times : Symbol(times, Decl(genericFunctionInference1.ts, 196, 18))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 200, 23))
->fn : Symbol(fn, Decl(genericFunctionInference1.ts, 200, 26))
->i : Symbol(i, Decl(genericFunctionInference1.ts, 200, 31))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 200, 23))
->n : Symbol(n, Decl(genericFunctionInference1.ts, 200, 50))
->T : Symbol(T, Decl(genericFunctionInference1.ts, 200, 23))
+>times : Symbol(times, Decl(genericFunctionInference1.ts, 243, 18))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 247, 23))
+>fn : Symbol(fn, Decl(genericFunctionInference1.ts, 247, 26))
+>i : Symbol(i, Decl(genericFunctionInference1.ts, 247, 31))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 247, 23))
+>n : Symbol(n, Decl(genericFunctionInference1.ts, 247, 50))
+>T : Symbol(T, Decl(genericFunctionInference1.ts, 247, 23))
const a2 = times(identity)(5); // => [0, 1, 2, 3, 4]
->a2 : Symbol(a2, Decl(genericFunctionInference1.ts, 201, 5))
->times : Symbol(times, Decl(genericFunctionInference1.ts, 196, 18))
->identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
+>a2 : Symbol(a2, Decl(genericFunctionInference1.ts, 248, 5))
+>times : Symbol(times, Decl(genericFunctionInference1.ts, 243, 18))
+>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 206, 13))
diff --git a/tests/baselines/reference/genericFunctionInference1.types b/tests/baselines/reference/genericFunctionInference1.types
index a78d20c133..1974fe17be 100644
--- a/tests/baselines/reference/genericFunctionInference1.types
+++ b/tests/baselines/reference/genericFunctionInference1.types
@@ -443,6 +443,150 @@ let f60 = wrap3(baz);
>wrap3 : (f: (a: A, b1: B, b2: B) => C) => (a: A, b1: B, b2: B) => C
>baz : (t1: T, t2: T, u: U) => [T, U]
+declare const list2: {
+>list2 : { (a: T): T[]; foo: string; bar(): number; }
+
+ (a: T): T[];
+>a : T
+
+ foo: string;
+>foo : string
+
+ bar(): number;
+>bar : () => number
+}
+
+let f70 = pipe(list2, box);
+>f70 : (a: T) => { value: T[]; }
+>pipe(list2, box) : (a: T) => { value: T[]; }
+>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; }
+>list2 : { (a: T): T[]; foo: string; bar(): number; }
+>box : (x: V) => { value: V; }
+
+let f71 = pipe(box, list2);
+>f71 : (x: V) => { value: V; }[]
+>pipe(box, list2) : (x: V) => { value: V; }[]
+>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; }
+>box : (x: V) => { value: V; }
+>list2 : { (a: T): T[]; foo: string; bar(): number; }
+
+declare class Point {
+>Point : Point
+
+ constructor(x: number, y: number);
+>x : number
+>y : number
+
+ readonly x: number;
+>x : number
+
+ readonly y: number;
+>y : number
+}
+
+declare class Bag {
+>Bag : Bag
+
+ constructor(...args: T[]);
+>args : T[]
+
+ contains(value: T): boolean;
+>contains : (value: T) => boolean
+>value : T
+
+ static foo: string;
+>foo : string
+}
+
+function asFunction(cf: new (...args: A) => B) {
+>asFunction : (cf: new (...args: A) => B) => (...args: A) => B
+>cf : new (...args: A) => B
+>args : A
+
+ return (...args: A) => new cf(...args);
+>(...args: A) => new cf(...args) : (...args: A) => B
+>args : A
+>new cf(...args) : B
+>cf : new (...args: A) => B
+>...args : any
+>args : A
+}
+
+const newPoint = asFunction(Point);
+>newPoint : (x: number, y: number) => Point
+>asFunction(Point) : (x: number, y: number) => Point
+>asFunction : (cf: new (...args: A) => B) => (...args: A) => B
+>Point : typeof Point
+
+const newBag = asFunction(Bag);
+>newBag : (...args: T[]) => Bag
+>asFunction(Bag) : (...args: T[]) => Bag
+>asFunction : (cf: new (...args: A) => B) => (...args: A) => B
+>Bag : typeof Bag
+
+const p1 = new Point(10, 20);
+>p1 : Point
+>new Point(10, 20) : Point
+>Point : typeof Point
+>10 : 10
+>20 : 20
+
+const p2 = newPoint(10, 20);
+>p2 : Point
+>newPoint(10, 20) : Point
+>newPoint : (x: number, y: number) => Point
+>10 : 10
+>20 : 20
+
+const bag1 = new Bag(1, 2, 3);
+>bag1 : Bag
+>new Bag(1, 2, 3) : Bag
+>Bag : typeof Bag
+>1 : 1
+>2 : 2
+>3 : 3
+
+const bag2 = newBag('a', 'b', 'c');
+>bag2 : Bag
+>newBag('a', 'b', 'c') : Bag
+>newBag : (...args: T[]) => Bag
+>'a' : "a"
+>'b' : "b"
+>'c' : "c"
+
+declare class Comp {
+>Comp : Comp
+
+ props: P;
+>props : P
+
+ constructor(props: P);
+>props : P
+}
+
+type CompClass
= new (props: P) => Comp
;
+>CompClass : CompClass
+>props : P
+
+declare function myHoc
(C: CompClass
): CompClass
;
+>myHoc :
(C: CompClass
) => CompClass
+>C : CompClass
+
+type GenericProps = { foo: number, stuff: T };
+>GenericProps : GenericProps
+>foo : number
+>stuff : T
+
+declare class GenericComp extends Comp> {}
+>GenericComp : GenericComp
+>Comp : Comp>
+
+const GenericComp2 = myHoc(GenericComp);
+>GenericComp2 : new (props: GenericProps) => Comp>
+>myHoc(GenericComp) : new (props: GenericProps) => Comp>
+>myHoc : (C: CompClass
) => CompClass
+>GenericComp : typeof GenericComp
+
// #417
function mirror(f: (a: A) => B): (a: A) => B { return f; }