-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Expand file tree
/
Copy pathreverseMappedThisTypeInference.symbols
More file actions
119 lines (92 loc) · 4.61 KB
/
reverseMappedThisTypeInference.symbols
File metadata and controls
119 lines (92 loc) · 4.61 KB
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
110
111
112
113
114
115
116
117
118
119
//// [tests/cases/compiler/reverseMappedThisTypeInference.ts] ////
=== reverseMappedThisTypeInference.ts ===
// Issue #62779: Type parameter leak caused by `this` and reverse mapped type
declare function testReverseMapped<T extends Record<string, unknown>>(obj: {
>testReverseMapped : Symbol(testReverseMapped, Decl(reverseMappedThisTypeInference.ts, 0, 0))
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 1, 35))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>obj : Symbol(obj, Decl(reverseMappedThisTypeInference.ts, 1, 70))
[K in keyof T]: () => T[K];
>K : Symbol(K, Decl(reverseMappedThisTypeInference.ts, 2, 5))
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 1, 35))
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 1, 35))
>K : Symbol(K, Decl(reverseMappedThisTypeInference.ts, 2, 5))
}): T;
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 1, 35))
const obj = testReverseMapped({
>obj : Symbol(obj, Decl(reverseMappedThisTypeInference.ts, 5, 5))
>testReverseMapped : Symbol(testReverseMapped, Decl(reverseMappedThisTypeInference.ts, 0, 0))
a() {
>a : Symbol(a, Decl(reverseMappedThisTypeInference.ts, 5, 31))
return 0;
},
b() {
>b : Symbol(b, Decl(reverseMappedThisTypeInference.ts, 8, 6))
return this.a();
>this.a : Symbol(a, Decl(reverseMappedThisTypeInference.ts, 5, 31))
>this : Symbol(__type, Decl(reverseMappedThisTypeInference.ts, 1, 74))
>a : Symbol(a, Decl(reverseMappedThisTypeInference.ts, 5, 31))
},
});
// Intersection with mapped type
declare function testReverseMapped2<T extends Record<string, unknown>, T2>(
>testReverseMapped2 : Symbol(testReverseMapped2, Decl(reverseMappedThisTypeInference.ts, 12, 3))
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 15, 36))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>T2 : Symbol(T2, Decl(reverseMappedThisTypeInference.ts, 15, 70))
obj: T2 & {
>obj : Symbol(obj, Decl(reverseMappedThisTypeInference.ts, 15, 75))
>T2 : Symbol(T2, Decl(reverseMappedThisTypeInference.ts, 15, 70))
[K in keyof T]: () => T[K];
>K : Symbol(K, Decl(reverseMappedThisTypeInference.ts, 17, 9))
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 15, 36))
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 15, 36))
>K : Symbol(K, Decl(reverseMappedThisTypeInference.ts, 17, 9))
},
): T;
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 15, 36))
const obj2 = testReverseMapped2({
>obj2 : Symbol(obj2, Decl(reverseMappedThisTypeInference.ts, 21, 5))
>testReverseMapped2 : Symbol(testReverseMapped2, Decl(reverseMappedThisTypeInference.ts, 12, 3))
a() {
>a : Symbol(a, Decl(reverseMappedThisTypeInference.ts, 21, 33))
return 0;
},
b() {
>b : Symbol(b, Decl(reverseMappedThisTypeInference.ts, 24, 6))
return this.a();
>this.a : Symbol(a, Decl(reverseMappedThisTypeInference.ts, 21, 33), Decl(reverseMappedThisTypeInference.ts, 21, 33))
>a : Symbol(a, Decl(reverseMappedThisTypeInference.ts, 21, 33), Decl(reverseMappedThisTypeInference.ts, 21, 33))
},
});
// Union with mapped type
declare function testReverseMapped3<T extends Record<string, unknown>, T2>(
>testReverseMapped3 : Symbol(testReverseMapped3, Decl(reverseMappedThisTypeInference.ts, 28, 3))
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 31, 36))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>T2 : Symbol(T2, Decl(reverseMappedThisTypeInference.ts, 31, 70))
obj: T2 | {
>obj : Symbol(obj, Decl(reverseMappedThisTypeInference.ts, 31, 75))
>T2 : Symbol(T2, Decl(reverseMappedThisTypeInference.ts, 31, 70))
[K in keyof T]: () => T[K];
>K : Symbol(K, Decl(reverseMappedThisTypeInference.ts, 33, 9))
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 31, 36))
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 31, 36))
>K : Symbol(K, Decl(reverseMappedThisTypeInference.ts, 33, 9))
},
): T;
>T : Symbol(T, Decl(reverseMappedThisTypeInference.ts, 31, 36))
const obj3 = testReverseMapped3({
>obj3 : Symbol(obj3, Decl(reverseMappedThisTypeInference.ts, 37, 5))
>testReverseMapped3 : Symbol(testReverseMapped3, Decl(reverseMappedThisTypeInference.ts, 28, 3))
a() {
>a : Symbol(a, Decl(reverseMappedThisTypeInference.ts, 37, 33))
return 0;
},
b() {
>b : Symbol(b, Decl(reverseMappedThisTypeInference.ts, 40, 6))
return this.a();
>this.a : Symbol(a, Decl(reverseMappedThisTypeInference.ts, 37, 33), Decl(reverseMappedThisTypeInference.ts, 37, 33))
>a : Symbol(a, Decl(reverseMappedThisTypeInference.ts, 37, 33), Decl(reverseMappedThisTypeInference.ts, 37, 33))
},
});