File: typeInferenceFBoundedTypeParams.types

package info (click to toggle)
node-typescript 3.3.3333-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 324,548 kB
  • sloc: makefile: 6; sh: 3
file content (75 lines) | stat: -rw-r--r-- 1,839 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
=== tests/cases/compiler/typeInferenceFBoundedTypeParams.ts ===
// Example from #6037

function fold<a, r>(values: a[], result: r, fold: (result: r, value: a) => r): r {
>fold : <a, r>(values: a[], result: r, fold: (result: r, value: a) => r) => r
>values : a[]
>result : r
>fold : (result: r, value: a) => r
>result : r
>value : a

    for (let value of values) {
>value : a
>values : a[]

        result = fold(result, value);
>result = fold(result, value) : r
>result : r
>fold(result, value) : r
>fold : (result: r, value: a) => r
>result : r
>value : a
    }
    return result;
>result : r
}

function append<a, b extends a>(values: a[], value: b): a[] {
>append : <a, b extends a>(values: a[], value: b) => a[]
>values : a[]
>value : b

    values.push(value);
>values.push(value) : number
>values.push : (...items: a[]) => number
>values : a[]
>push : (...items: a[]) => number
>value : b

    return values;
>values : a[]
}

fold(
>fold(    [1, 2, 3],    [] as [string, string][],    (result, value) => append(        result,        ["", ""]    )) : [string, string][]
>fold : <a, r>(values: a[], result: r, fold: (result: r, value: a) => r) => r

    [1, 2, 3],
>[1, 2, 3] : number[]
>1 : 1
>2 : 2
>3 : 3

    [] as [string, string][],
>[] as [string, string][] : [string, string][]
>[] : undefined[]

    (result, value) => append(
>(result, value) => append(        result,        ["", ""]    ) : (result: [string, string][], value: number) => [string, string][]
>result : [string, string][]
>value : number
>append(        result,        ["", ""]    ) : [string, string][]
>append : <a, b extends a>(values: a[], value: b) => a[]

        result,
>result : [string, string][]

        ["", ""]
>["", ""] : [string, string]
>"" : ""
>"" : ""

    )
);