-
Notifications
You must be signed in to change notification settings - Fork 12.8k
/
Copy pathcontextSensitiveAnnotatedParametersInference1.types
109 lines (93 loc) · 3.79 KB
/
contextSensitiveAnnotatedParametersInference1.types
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//// [tests/cases/compiler/contextSensitiveAnnotatedParametersInference1.ts] ////
=== contextSensitiveAnnotatedParametersInference1.ts ===
declare function test<T, A, B>(obj: {
>test : <T, A, B>(obj: { ctx: T; a: (a: A, ctx: T) => void; b: (b: B, ctx: T, a: A) => void; }) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^
>obj : { ctx: T; a: (a: A, ctx: T) => void; b: (b: B, ctx: T, a: A) => void; }
> : ^^^^^^^ ^^^^^ ^^^^^ ^^^
ctx: T;
>ctx : T
> : ^
a: (a: A, ctx: T) => void;
>a : (a: A, ctx: T) => void
> : ^ ^^ ^^ ^^ ^^^^^
>a : A
> : ^
>ctx : T
> : ^
b: (b: B, ctx: T, a: A) => void;
>b : (b: B, ctx: T, a: A) => void
> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^
>b : B
> : ^
>ctx : T
> : ^
>a : A
> : ^
}): void;
test({
>test({ ctx: 'foo', a: (a: string, ctx) => {}, b: (b: string, ctx, a) => {},}) : void
> : ^^^^
>test : <T, A, B>(obj: { ctx: T; a: (a: A, ctx: T) => void; b: (b: B, ctx: T, a: A) => void; }) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^
>{ ctx: 'foo', a: (a: string, ctx) => {}, b: (b: string, ctx, a) => {},} : { ctx: string; a: (a: string, ctx: string) => void; b: (b: string, ctx: string, a: string) => void; }
> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
ctx: 'foo',
>ctx : string
> : ^^^^^^
>'foo' : "foo"
> : ^^^^^
a: (a: string, ctx) => {},
>a : (a: string, ctx: string) => void
> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^
>(a: string, ctx) => {} : (a: string, ctx: string) => void
> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^
>a : string
> : ^^^^^^
>ctx : string
> : ^^^^^^
b: (b: string, ctx, a) => {},
>b : (b: string, ctx: string, a: string) => void
> : ^ ^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
>(b: string, ctx, a) => {} : (b: string, ctx: string, a: string) => void
> : ^ ^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
>b : string
> : ^^^^^^
>ctx : string
> : ^^^^^^
>a : string
> : ^^^^^^
});
test({
>test({ ctx: 'foo', b: (b: string, ctx, a) => {}, a: (a: string, ctx) => {},}) : void
> : ^^^^
>test : <T, A, B>(obj: { ctx: T; a: (a: A, ctx: T) => void; b: (b: B, ctx: T, a: A) => void; }) => void
> : ^ ^^ ^^ ^^ ^^ ^^^^^
>{ ctx: 'foo', b: (b: string, ctx, a) => {}, a: (a: string, ctx) => {},} : { ctx: string; b: (b: string, ctx: string, a: string) => void; a: (a: string, ctx: string) => void; }
> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^
ctx: 'foo',
>ctx : string
> : ^^^^^^
>'foo' : "foo"
> : ^^^^^
b: (b: string, ctx, a) => {},
>b : (b: string, ctx: string, a: string) => void
> : ^ ^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
>(b: string, ctx, a) => {} : (b: string, ctx: string, a: string) => void
> : ^ ^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
>b : string
> : ^^^^^^
>ctx : string
> : ^^^^^^
>a : string
> : ^^^^^^
a: (a: string, ctx) => {},
>a : (a: string, ctx: string) => void
> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^
>(a: string, ctx) => {} : (a: string, ctx: string) => void
> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^
>a : string
> : ^^^^^^
>ctx : string
> : ^^^^^^
});