Accept new baselines

This commit is contained in:
Anders Hejlsberg 2019-03-13 06:51:39 -07:00
parent fd0d477519
commit e7afa6c0a9
4 changed files with 306 additions and 233 deletions

View File

@ -1,4 +1,4 @@
tests/cases/compiler/genericFunctionInference1.ts(83,14): error TS2345: Argument of type '<a>(value: { key: a; }) => a' is not assignable to parameter of type '(value: Data) => string'.
tests/cases/compiler/genericFunctionInference1.ts(88,14): error TS2345: Argument of type '<a>(value: { key: a; }) => a' is not assignable to parameter of type '(value: Data) => string'.
Type 'number' is not assignable to type 'string'.
@ -62,6 +62,11 @@ tests/cases/compiler/genericFunctionInference1.ts(83,14): error TS2345: Argument
const f50 = pipe5(list); // No higher order inference
declare function wrap3<A, B, C>(f: (a: A, b1: B, b2: B) => C): (a: A, b1: B, b2: B) => C;
declare function baz<T, U extends T>(t1: T, t2: T, u: U): [T, U];
let f60 = wrap3(baz);
// #417
function mirror<A, B>(f: (a: A) => B): (a: A) => B { return f; }

View File

@ -58,6 +58,11 @@ declare function pipe5<A, B>(f: (a: A) => B): { f: (a: A) => B };
const f50 = pipe5(list); // No higher order inference
declare function wrap3<A, B, C>(f: (a: A, b1: B, b2: B) => C): (a: A, b1: B, b2: B) => C;
declare function baz<T, U extends T>(t1: T, t2: T, u: U): [T, U];
let f60 = wrap3(baz);
// #417
function mirror<A, B>(f: (a: A) => B): (a: A) => B { return f; }
@ -236,6 +241,7 @@ const f32 = pipe3(list, list);
const f40 = pipe4([list, box]);
const f41 = pipe4([box, list]);
const f50 = pipe5(list); // No higher order inference
let f60 = wrap3(baz);
// #417
function mirror(f) { return f; }
var identityM = mirror(identity);

View File

@ -457,299 +457,339 @@ const f50 = pipe5(list); // No higher order inference
>pipe5 : Symbol(pipe5, Decl(genericFunctionInference1.ts, 53, 31))
>list : Symbol(list, Decl(genericFunctionInference1.ts, 2, 124))
declare function wrap3<A, B, C>(f: (a: A, b1: B, b2: B) => C): (a: A, b1: B, b2: B) => C;
>wrap3 : Symbol(wrap3, Decl(genericFunctionInference1.ts, 57, 24))
>A : Symbol(A, Decl(genericFunctionInference1.ts, 59, 23))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 59, 25))
>C : Symbol(C, Decl(genericFunctionInference1.ts, 59, 28))
>f : Symbol(f, Decl(genericFunctionInference1.ts, 59, 32))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 59, 36))
>A : Symbol(A, Decl(genericFunctionInference1.ts, 59, 23))
>b1 : Symbol(b1, Decl(genericFunctionInference1.ts, 59, 41))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 59, 25))
>b2 : Symbol(b2, Decl(genericFunctionInference1.ts, 59, 48))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 59, 25))
>C : Symbol(C, Decl(genericFunctionInference1.ts, 59, 28))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 59, 64))
>A : Symbol(A, Decl(genericFunctionInference1.ts, 59, 23))
>b1 : Symbol(b1, Decl(genericFunctionInference1.ts, 59, 69))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 59, 25))
>b2 : Symbol(b2, Decl(genericFunctionInference1.ts, 59, 76))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 59, 25))
>C : Symbol(C, Decl(genericFunctionInference1.ts, 59, 28))
declare function baz<T, U extends T>(t1: T, t2: T, u: U): [T, U];
>baz : Symbol(baz, Decl(genericFunctionInference1.ts, 59, 89))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 60, 21))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 60, 23))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 60, 21))
>t1 : Symbol(t1, Decl(genericFunctionInference1.ts, 60, 37))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 60, 21))
>t2 : Symbol(t2, Decl(genericFunctionInference1.ts, 60, 43))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 60, 21))
>u : Symbol(u, Decl(genericFunctionInference1.ts, 60, 50))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 60, 23))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 60, 21))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 60, 23))
let f60 = wrap3(baz);
>f60 : Symbol(f60, Decl(genericFunctionInference1.ts, 62, 3))
>wrap3 : Symbol(wrap3, Decl(genericFunctionInference1.ts, 57, 24))
>baz : Symbol(baz, Decl(genericFunctionInference1.ts, 59, 89))
// #417
function mirror<A, B>(f: (a: A) => B): (a: A) => B { return f; }
>mirror : Symbol(mirror, Decl(genericFunctionInference1.ts, 57, 24))
>A : Symbol(A, Decl(genericFunctionInference1.ts, 61, 16))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 61, 18))
>f : Symbol(f, Decl(genericFunctionInference1.ts, 61, 22))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 61, 26))
>A : Symbol(A, Decl(genericFunctionInference1.ts, 61, 16))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 61, 18))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 61, 40))
>A : Symbol(A, Decl(genericFunctionInference1.ts, 61, 16))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 61, 18))
>f : Symbol(f, Decl(genericFunctionInference1.ts, 61, 22))
>mirror : Symbol(mirror, Decl(genericFunctionInference1.ts, 62, 21))
>A : Symbol(A, Decl(genericFunctionInference1.ts, 66, 16))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 66, 18))
>f : Symbol(f, Decl(genericFunctionInference1.ts, 66, 22))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 66, 26))
>A : Symbol(A, Decl(genericFunctionInference1.ts, 66, 16))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 66, 18))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 66, 40))
>A : Symbol(A, Decl(genericFunctionInference1.ts, 66, 16))
>B : Symbol(B, Decl(genericFunctionInference1.ts, 66, 18))
>f : Symbol(f, Decl(genericFunctionInference1.ts, 66, 22))
var identityM = mirror(identity);
>identityM : Symbol(identityM, Decl(genericFunctionInference1.ts, 62, 3))
>mirror : Symbol(mirror, Decl(genericFunctionInference1.ts, 57, 24))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 154, 13))
>identityM : Symbol(identityM, Decl(genericFunctionInference1.ts, 67, 3))
>mirror : Symbol(mirror, Decl(genericFunctionInference1.ts, 62, 21))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
var x = 1;
>x : Symbol(x, Decl(genericFunctionInference1.ts, 64, 3))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 69, 3))
var y = identity(x);
>y : Symbol(y, Decl(genericFunctionInference1.ts, 65, 3))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 154, 13))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 64, 3))
>y : Symbol(y, Decl(genericFunctionInference1.ts, 70, 3))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 69, 3))
var z = identityM(x);
>z : Symbol(z, Decl(genericFunctionInference1.ts, 66, 3))
>identityM : Symbol(identityM, Decl(genericFunctionInference1.ts, 62, 3))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 64, 3))
>z : Symbol(z, Decl(genericFunctionInference1.ts, 71, 3))
>identityM : Symbol(identityM, Decl(genericFunctionInference1.ts, 67, 3))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 69, 3))
// #3038
export function keyOf<a>(value: { key: a; }): a {
>keyOf : Symbol(keyOf, Decl(genericFunctionInference1.ts, 66, 21))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 70, 22))
>value : Symbol(value, Decl(genericFunctionInference1.ts, 70, 25))
>key : Symbol(key, Decl(genericFunctionInference1.ts, 70, 33))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 70, 22))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 70, 22))
>keyOf : Symbol(keyOf, Decl(genericFunctionInference1.ts, 71, 21))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 75, 22))
>value : Symbol(value, Decl(genericFunctionInference1.ts, 75, 25))
>key : Symbol(key, Decl(genericFunctionInference1.ts, 75, 33))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 75, 22))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 75, 22))
return value.key;
>value.key : Symbol(key, Decl(genericFunctionInference1.ts, 70, 33))
>value : Symbol(value, Decl(genericFunctionInference1.ts, 70, 25))
>key : Symbol(key, Decl(genericFunctionInference1.ts, 70, 33))
>value.key : Symbol(key, Decl(genericFunctionInference1.ts, 75, 33))
>value : Symbol(value, Decl(genericFunctionInference1.ts, 75, 25))
>key : Symbol(key, Decl(genericFunctionInference1.ts, 75, 33))
}
export interface Data {
>Data : Symbol(Data, Decl(genericFunctionInference1.ts, 72, 1))
>Data : Symbol(Data, Decl(genericFunctionInference1.ts, 77, 1))
key: number;
>key : Symbol(Data.key, Decl(genericFunctionInference1.ts, 73, 23))
>key : Symbol(Data.key, Decl(genericFunctionInference1.ts, 78, 23))
value: Date;
>value : Symbol(Data.value, Decl(genericFunctionInference1.ts, 74, 16))
>value : Symbol(Data.value, Decl(genericFunctionInference1.ts, 79, 16))
>Date : Symbol(Date, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.scripthost.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
}
var data: Data[] = [];
>data : Symbol(data, Decl(genericFunctionInference1.ts, 78, 3))
>Data : Symbol(Data, Decl(genericFunctionInference1.ts, 72, 1))
>data : Symbol(data, Decl(genericFunctionInference1.ts, 83, 3))
>Data : Symbol(Data, Decl(genericFunctionInference1.ts, 77, 1))
declare function toKeys<a>(values: a[], toKey: (value: a) => string): string[];
>toKeys : Symbol(toKeys, Decl(genericFunctionInference1.ts, 78, 22))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 80, 24))
>values : Symbol(values, Decl(genericFunctionInference1.ts, 80, 27))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 80, 24))
>toKey : Symbol(toKey, Decl(genericFunctionInference1.ts, 80, 39))
>value : Symbol(value, Decl(genericFunctionInference1.ts, 80, 48))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 80, 24))
>toKeys : Symbol(toKeys, Decl(genericFunctionInference1.ts, 83, 22))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 85, 24))
>values : Symbol(values, Decl(genericFunctionInference1.ts, 85, 27))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 85, 24))
>toKey : Symbol(toKey, Decl(genericFunctionInference1.ts, 85, 39))
>value : Symbol(value, Decl(genericFunctionInference1.ts, 85, 48))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 85, 24))
toKeys(data, keyOf); // Error
>toKeys : Symbol(toKeys, Decl(genericFunctionInference1.ts, 78, 22))
>data : Symbol(data, Decl(genericFunctionInference1.ts, 78, 3))
>keyOf : Symbol(keyOf, Decl(genericFunctionInference1.ts, 66, 21))
>toKeys : Symbol(toKeys, Decl(genericFunctionInference1.ts, 83, 22))
>data : Symbol(data, Decl(genericFunctionInference1.ts, 83, 3))
>keyOf : Symbol(keyOf, Decl(genericFunctionInference1.ts, 71, 21))
// #9366
function flip<a, b, c>(f: (a: a, b: b) => c): (b: b, a: a) => c {
>flip : Symbol(flip, Decl(genericFunctionInference1.ts, 82, 20))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 86, 14))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 86, 16))
>c : Symbol(c, Decl(genericFunctionInference1.ts, 86, 19))
>f : Symbol(f, Decl(genericFunctionInference1.ts, 86, 23))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 86, 27))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 86, 14))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 86, 32))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 86, 16))
>c : Symbol(c, Decl(genericFunctionInference1.ts, 86, 19))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 86, 47))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 86, 16))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 86, 52))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 86, 14))
>c : Symbol(c, Decl(genericFunctionInference1.ts, 86, 19))
>flip : Symbol(flip, Decl(genericFunctionInference1.ts, 87, 20))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 91, 14))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 91, 16))
>c : Symbol(c, Decl(genericFunctionInference1.ts, 91, 19))
>f : Symbol(f, Decl(genericFunctionInference1.ts, 91, 23))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 91, 27))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 91, 14))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 91, 32))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 91, 16))
>c : Symbol(c, Decl(genericFunctionInference1.ts, 91, 19))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 91, 47))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 91, 16))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 91, 52))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 91, 14))
>c : Symbol(c, Decl(genericFunctionInference1.ts, 91, 19))
return (b: b, a: a) => f(a, b);
>b : Symbol(b, Decl(genericFunctionInference1.ts, 87, 10))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 86, 16))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 87, 15))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 86, 14))
>f : Symbol(f, Decl(genericFunctionInference1.ts, 86, 23))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 87, 15))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 87, 10))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 92, 10))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 91, 16))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 92, 15))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 91, 14))
>f : Symbol(f, Decl(genericFunctionInference1.ts, 91, 23))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 92, 15))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 92, 10))
}
function zip<T, U>(x: T, y: U): [T, U] {
>zip : Symbol(zip, Decl(genericFunctionInference1.ts, 88, 1))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 89, 13))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 89, 15))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 89, 19))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 89, 13))
>y : Symbol(y, Decl(genericFunctionInference1.ts, 89, 24))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 89, 15))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 89, 13))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 89, 15))
>zip : Symbol(zip, Decl(genericFunctionInference1.ts, 93, 1))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 94, 13))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 94, 15))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 94, 19))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 94, 13))
>y : Symbol(y, Decl(genericFunctionInference1.ts, 94, 24))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 94, 15))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 94, 13))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 94, 15))
return [x, y];
>x : Symbol(x, Decl(genericFunctionInference1.ts, 89, 19))
>y : Symbol(y, Decl(genericFunctionInference1.ts, 89, 24))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 94, 19))
>y : Symbol(y, Decl(genericFunctionInference1.ts, 94, 24))
}
var expected: <T, U>(y: U, x: T) => [T, U] = flip(zip);
>expected : Symbol(expected, Decl(genericFunctionInference1.ts, 93, 3))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 93, 15))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 93, 17))
>y : Symbol(y, Decl(genericFunctionInference1.ts, 93, 21))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 93, 17))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 93, 26))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 93, 15))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 93, 15))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 93, 17))
>flip : Symbol(flip, Decl(genericFunctionInference1.ts, 82, 20))
>zip : Symbol(zip, Decl(genericFunctionInference1.ts, 88, 1))
>expected : Symbol(expected, Decl(genericFunctionInference1.ts, 98, 3))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 98, 15))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 98, 17))
>y : Symbol(y, Decl(genericFunctionInference1.ts, 98, 21))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 98, 17))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 98, 26))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 98, 15))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 98, 15))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 98, 17))
>flip : Symbol(flip, Decl(genericFunctionInference1.ts, 87, 20))
>zip : Symbol(zip, Decl(genericFunctionInference1.ts, 93, 1))
var actual = flip(zip);
>actual : Symbol(actual, Decl(genericFunctionInference1.ts, 94, 3))
>flip : Symbol(flip, Decl(genericFunctionInference1.ts, 82, 20))
>zip : Symbol(zip, Decl(genericFunctionInference1.ts, 88, 1))
>actual : Symbol(actual, Decl(genericFunctionInference1.ts, 99, 3))
>flip : Symbol(flip, Decl(genericFunctionInference1.ts, 87, 20))
>zip : Symbol(zip, Decl(genericFunctionInference1.ts, 93, 1))
// #9366
const map = <T, U>(transform: (t: T) => U) =>
>map : Symbol(map, Decl(genericFunctionInference1.ts, 98, 5))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 98, 13))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 98, 15))
>transform : Symbol(transform, Decl(genericFunctionInference1.ts, 98, 19))
>t : Symbol(t, Decl(genericFunctionInference1.ts, 98, 31))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 98, 13))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 98, 15))
>map : Symbol(map, Decl(genericFunctionInference1.ts, 103, 5))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 103, 13))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 103, 15))
>transform : Symbol(transform, Decl(genericFunctionInference1.ts, 103, 19))
>t : Symbol(t, Decl(genericFunctionInference1.ts, 103, 31))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 103, 13))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 103, 15))
(arr: T[]) => arr.map(transform)
>arr : Symbol(arr, Decl(genericFunctionInference1.ts, 99, 5))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 98, 13))
>arr : Symbol(arr, Decl(genericFunctionInference1.ts, 104, 5))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 103, 13))
>arr.map : Symbol(Array.map, Decl(lib.es5.d.ts, --, --))
>arr : Symbol(arr, Decl(genericFunctionInference1.ts, 99, 5))
>arr : Symbol(arr, Decl(genericFunctionInference1.ts, 104, 5))
>map : Symbol(Array.map, Decl(lib.es5.d.ts, --, --))
>transform : Symbol(transform, Decl(genericFunctionInference1.ts, 98, 19))
>transform : Symbol(transform, Decl(genericFunctionInference1.ts, 103, 19))
const identityStr = (t: string) => t;
>identityStr : Symbol(identityStr, Decl(genericFunctionInference1.ts, 101, 5))
>t : Symbol(t, Decl(genericFunctionInference1.ts, 101, 21))
>t : Symbol(t, Decl(genericFunctionInference1.ts, 101, 21))
>identityStr : Symbol(identityStr, Decl(genericFunctionInference1.ts, 106, 5))
>t : Symbol(t, Decl(genericFunctionInference1.ts, 106, 21))
>t : Symbol(t, Decl(genericFunctionInference1.ts, 106, 21))
const arr: string[] = map(identityStr)(['a']);
>arr : Symbol(arr, Decl(genericFunctionInference1.ts, 103, 5))
>map : Symbol(map, Decl(genericFunctionInference1.ts, 98, 5))
>identityStr : Symbol(identityStr, Decl(genericFunctionInference1.ts, 101, 5))
>arr : Symbol(arr, Decl(genericFunctionInference1.ts, 108, 5))
>map : Symbol(map, Decl(genericFunctionInference1.ts, 103, 5))
>identityStr : Symbol(identityStr, Decl(genericFunctionInference1.ts, 106, 5))
const arr1: string[] = map(identity)(['a']);
>arr1 : Symbol(arr1, Decl(genericFunctionInference1.ts, 104, 5))
>map : Symbol(map, Decl(genericFunctionInference1.ts, 98, 5))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 154, 13))
>arr1 : Symbol(arr1, Decl(genericFunctionInference1.ts, 109, 5))
>map : Symbol(map, Decl(genericFunctionInference1.ts, 103, 5))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
// #9949
function of2<a, b>(one: a, two: b): [a, b] {
>of2 : Symbol(of2, Decl(genericFunctionInference1.ts, 104, 44))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 108, 13))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 108, 15))
>one : Symbol(one, Decl(genericFunctionInference1.ts, 108, 19))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 108, 13))
>two : Symbol(two, Decl(genericFunctionInference1.ts, 108, 26))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 108, 15))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 108, 13))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 108, 15))
>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))
return [one, two];
>one : Symbol(one, Decl(genericFunctionInference1.ts, 108, 19))
>two : Symbol(two, Decl(genericFunctionInference1.ts, 108, 26))
>one : Symbol(one, Decl(genericFunctionInference1.ts, 113, 19))
>two : Symbol(two, Decl(genericFunctionInference1.ts, 113, 26))
}
const flipped = flip(of2);
>flipped : Symbol(flipped, Decl(genericFunctionInference1.ts, 112, 5))
>flip : Symbol(flip, Decl(genericFunctionInference1.ts, 82, 20))
>of2 : Symbol(of2, Decl(genericFunctionInference1.ts, 104, 44))
>flipped : Symbol(flipped, Decl(genericFunctionInference1.ts, 117, 5))
>flip : Symbol(flip, Decl(genericFunctionInference1.ts, 87, 20))
>of2 : Symbol(of2, Decl(genericFunctionInference1.ts, 109, 44))
// #29904.1
type Component<P> = (props: P) => {};
>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 112, 26))
>P : Symbol(P, Decl(genericFunctionInference1.ts, 116, 15))
>props : Symbol(props, Decl(genericFunctionInference1.ts, 116, 21))
>P : Symbol(P, Decl(genericFunctionInference1.ts, 116, 15))
>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))
declare const myHoc1: <P>(C: Component<P>) => Component<P>;
>myHoc1 : Symbol(myHoc1, Decl(genericFunctionInference1.ts, 118, 13))
>P : Symbol(P, Decl(genericFunctionInference1.ts, 118, 23))
>C : Symbol(C, Decl(genericFunctionInference1.ts, 118, 26))
>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 112, 26))
>P : Symbol(P, Decl(genericFunctionInference1.ts, 118, 23))
>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 112, 26))
>P : Symbol(P, Decl(genericFunctionInference1.ts, 118, 23))
>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))
declare const myHoc2: <P>(C: Component<P>) => Component<P>;
>myHoc2 : Symbol(myHoc2, Decl(genericFunctionInference1.ts, 119, 13))
>P : Symbol(P, Decl(genericFunctionInference1.ts, 119, 23))
>C : Symbol(C, Decl(genericFunctionInference1.ts, 119, 26))
>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 112, 26))
>P : Symbol(P, Decl(genericFunctionInference1.ts, 119, 23))
>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 112, 26))
>P : Symbol(P, Decl(genericFunctionInference1.ts, 119, 23))
>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))
declare const MyComponent1: Component<{ foo: 1 }>;
>MyComponent1 : Symbol(MyComponent1, Decl(genericFunctionInference1.ts, 121, 13))
>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 112, 26))
>foo : Symbol(foo, Decl(genericFunctionInference1.ts, 121, 39))
>MyComponent1 : Symbol(MyComponent1, Decl(genericFunctionInference1.ts, 126, 13))
>Component : Symbol(Component, Decl(genericFunctionInference1.ts, 117, 26))
>foo : Symbol(foo, Decl(genericFunctionInference1.ts, 126, 39))
const enhance = pipe(
>enhance : Symbol(enhance, Decl(genericFunctionInference1.ts, 123, 5))
>enhance : Symbol(enhance, Decl(genericFunctionInference1.ts, 128, 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, 118, 13))
>myHoc1 : Symbol(myHoc1, Decl(genericFunctionInference1.ts, 123, 13))
myHoc2,
>myHoc2 : Symbol(myHoc2, Decl(genericFunctionInference1.ts, 119, 13))
>myHoc2 : Symbol(myHoc2, Decl(genericFunctionInference1.ts, 124, 13))
);
const MyComponent2 = enhance(MyComponent1);
>MyComponent2 : Symbol(MyComponent2, Decl(genericFunctionInference1.ts, 128, 5))
>enhance : Symbol(enhance, Decl(genericFunctionInference1.ts, 123, 5))
>MyComponent1 : Symbol(MyComponent1, Decl(genericFunctionInference1.ts, 121, 13))
>MyComponent2 : Symbol(MyComponent2, Decl(genericFunctionInference1.ts, 133, 5))
>enhance : Symbol(enhance, Decl(genericFunctionInference1.ts, 128, 5))
>MyComponent1 : Symbol(MyComponent1, Decl(genericFunctionInference1.ts, 126, 13))
// #29904.2
const fn20 = pipe((_a?: {}) => 1);
>fn20 : Symbol(fn20, Decl(genericFunctionInference1.ts, 132, 5))
>fn20 : Symbol(fn20, Decl(genericFunctionInference1.ts, 137, 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, 132, 19))
>_a : Symbol(_a, Decl(genericFunctionInference1.ts, 137, 19))
// #29904.3
type Fn = (n: number) => number;
>Fn : Symbol(Fn, Decl(genericFunctionInference1.ts, 132, 34))
>n : Symbol(n, Decl(genericFunctionInference1.ts, 136, 11))
>Fn : Symbol(Fn, Decl(genericFunctionInference1.ts, 137, 34))
>n : Symbol(n, Decl(genericFunctionInference1.ts, 141, 11))
const fn30: Fn = pipe(
>fn30 : Symbol(fn30, Decl(genericFunctionInference1.ts, 137, 5))
>Fn : Symbol(Fn, Decl(genericFunctionInference1.ts, 132, 34))
>fn30 : Symbol(fn30, Decl(genericFunctionInference1.ts, 142, 5))
>Fn : Symbol(Fn, Decl(genericFunctionInference1.ts, 137, 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, 137, 22))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 137, 22))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 142, 22))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 142, 22))
x => x * 2,
>x : Symbol(x, Decl(genericFunctionInference1.ts, 138, 15))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 138, 15))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 143, 15))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 143, 15))
);
const promise = Promise.resolve(1);
>promise : Symbol(promise, Decl(genericFunctionInference1.ts, 142, 5))
>promise : Symbol(promise, Decl(genericFunctionInference1.ts, 147, 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, 142, 5))
>promise : Symbol(promise, Decl(genericFunctionInference1.ts, 147, 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, 144, 9))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 144, 9))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 149, 9))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 149, 9))
x => x * 2,
>x : Symbol(x, Decl(genericFunctionInference1.ts, 145, 19))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 145, 19))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 150, 19))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 150, 19))
),
);
@ -757,137 +797,137 @@ promise.then(
// #29904.4
declare const getString: () => string;
>getString : Symbol(getString, Decl(genericFunctionInference1.ts, 152, 13))
>getString : Symbol(getString, Decl(genericFunctionInference1.ts, 157, 13))
declare const orUndefined: (name: string) => string | undefined;
>orUndefined : Symbol(orUndefined, Decl(genericFunctionInference1.ts, 153, 13))
>name : Symbol(name, Decl(genericFunctionInference1.ts, 153, 28))
>orUndefined : Symbol(orUndefined, Decl(genericFunctionInference1.ts, 158, 13))
>name : Symbol(name, Decl(genericFunctionInference1.ts, 158, 28))
declare const identity: <T>(value: T) => T;
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 154, 13))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 154, 25))
>value : Symbol(value, Decl(genericFunctionInference1.ts, 154, 28))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 154, 25))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 154, 25))
>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))
const fn40 = pipe(
>fn40 : Symbol(fn40, Decl(genericFunctionInference1.ts, 156, 5))
>fn40 : Symbol(fn40, Decl(genericFunctionInference1.ts, 161, 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, 152, 13))
>getString : Symbol(getString, Decl(genericFunctionInference1.ts, 157, 13))
string => orUndefined(string),
>string : Symbol(string, Decl(genericFunctionInference1.ts, 157, 14))
>orUndefined : Symbol(orUndefined, Decl(genericFunctionInference1.ts, 153, 13))
>string : Symbol(string, Decl(genericFunctionInference1.ts, 157, 14))
>string : Symbol(string, Decl(genericFunctionInference1.ts, 162, 14))
>orUndefined : Symbol(orUndefined, Decl(genericFunctionInference1.ts, 158, 13))
>string : Symbol(string, Decl(genericFunctionInference1.ts, 162, 14))
identity,
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 154, 13))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
);
// #29904.6
declare const getArray: () => string[];
>getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 164, 13))
>getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 169, 13))
declare const first: <T>(ts: T[]) => T;
>first : Symbol(first, Decl(genericFunctionInference1.ts, 165, 13))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 165, 22))
>ts : Symbol(ts, Decl(genericFunctionInference1.ts, 165, 25))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 165, 22))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 165, 22))
>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))
const fn60 = pipe(
>fn60 : Symbol(fn60, Decl(genericFunctionInference1.ts, 167, 5))
>fn60 : Symbol(fn60, Decl(genericFunctionInference1.ts, 172, 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, 164, 13))
>getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 169, 13))
x => x,
>x : Symbol(x, Decl(genericFunctionInference1.ts, 168, 13))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 168, 13))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 173, 13))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 173, 13))
first,
>first : Symbol(first, Decl(genericFunctionInference1.ts, 165, 13))
>first : Symbol(first, Decl(genericFunctionInference1.ts, 170, 13))
);
const fn61 = pipe(
>fn61 : Symbol(fn61, Decl(genericFunctionInference1.ts, 173, 5))
>fn61 : Symbol(fn61, Decl(genericFunctionInference1.ts, 178, 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, 164, 13))
>getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 169, 13))
identity,
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 154, 13))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
first,
>first : Symbol(first, Decl(genericFunctionInference1.ts, 165, 13))
>first : Symbol(first, Decl(genericFunctionInference1.ts, 170, 13))
);
const fn62 = pipe(
>fn62 : Symbol(fn62, Decl(genericFunctionInference1.ts, 179, 5))
>fn62 : Symbol(fn62, Decl(genericFunctionInference1.ts, 184, 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, 164, 13))
>getArray : Symbol(getArray, Decl(genericFunctionInference1.ts, 169, 13))
x => x,
>x : Symbol(x, Decl(genericFunctionInference1.ts, 180, 13))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 180, 13))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 185, 13))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 185, 13))
x => first(x),
>x : Symbol(x, Decl(genericFunctionInference1.ts, 181, 11))
>first : Symbol(first, Decl(genericFunctionInference1.ts, 165, 13))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 181, 11))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 186, 11))
>first : Symbol(first, Decl(genericFunctionInference1.ts, 170, 13))
>x : Symbol(x, Decl(genericFunctionInference1.ts, 186, 11))
);
// Repro from #30297
declare function foo2<T, U = T>(fn: T, a?: U, b?: U): [T, U];
>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 183, 2))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 187, 22))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 187, 24))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 187, 22))
>fn : Symbol(fn, Decl(genericFunctionInference1.ts, 187, 32))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 187, 22))
>a : Symbol(a, Decl(genericFunctionInference1.ts, 187, 38))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 187, 24))
>b : Symbol(b, Decl(genericFunctionInference1.ts, 187, 45))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 187, 24))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 187, 22))
>U : Symbol(U, Decl(genericFunctionInference1.ts, 187, 24))
>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(() => {});
>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 183, 2))
>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 188, 2))
foo2(identity);
>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 183, 2))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 154, 13))
>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 188, 2))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
foo2(identity, 1);
>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 183, 2))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 154, 13))
>foo2 : Symbol(foo2, Decl(genericFunctionInference1.ts, 188, 2))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))
// Repro from #30324
declare function times<T>(fn: (i: number) => T): (n: number) => T[];
>times : Symbol(times, Decl(genericFunctionInference1.ts, 191, 18))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 195, 23))
>fn : Symbol(fn, Decl(genericFunctionInference1.ts, 195, 26))
>i : Symbol(i, Decl(genericFunctionInference1.ts, 195, 31))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 195, 23))
>n : Symbol(n, Decl(genericFunctionInference1.ts, 195, 50))
>T : Symbol(T, Decl(genericFunctionInference1.ts, 195, 23))
>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))
const a2 = times(identity)(5); // => [0, 1, 2, 3, 4]
>a2 : Symbol(a2, Decl(genericFunctionInference1.ts, 196, 5))
>times : Symbol(times, Decl(genericFunctionInference1.ts, 191, 18))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 154, 13))
>a2 : Symbol(a2, Decl(genericFunctionInference1.ts, 201, 5))
>times : Symbol(times, Decl(genericFunctionInference1.ts, 196, 18))
>identity : Symbol(identity, Decl(genericFunctionInference1.ts, 159, 13))

View File

@ -421,6 +421,28 @@ const f50 = pipe5(list); // No higher order inference
>pipe5 : <A, B>(f: (a: A) => B) => { f: (a: A) => B; }
>list : <T>(a: T) => T[]
declare function wrap3<A, B, C>(f: (a: A, b1: B, b2: B) => C): (a: A, b1: B, b2: B) => C;
>wrap3 : <A, B, C>(f: (a: A, b1: B, b2: B) => C) => (a: A, b1: B, b2: B) => C
>f : (a: A, b1: B, b2: B) => C
>a : A
>b1 : B
>b2 : B
>a : A
>b1 : B
>b2 : B
declare function baz<T, U extends T>(t1: T, t2: T, u: U): [T, U];
>baz : <T, U extends T>(t1: T, t2: T, u: U) => [T, U]
>t1 : T
>t2 : T
>u : U
let f60 = wrap3(baz);
>f60 : <T, U extends T>(a: T, b1: U, b2: U) => [T, U]
>wrap3(baz) : <T, U extends T>(a: T, b1: U, b2: U) => [T, U]
>wrap3 : <A, B, C>(f: (a: A, b1: B, b2: B) => C) => (a: A, b1: B, b2: B) => C
>baz : <T, U extends T>(t1: T, t2: T, u: U) => [T, U]
// #417
function mirror<A, B>(f: (a: A) => B): (a: A) => B { return f; }