File: computedEnumTypeWidening.symbols

package info (click to toggle)
node-typescript 5.0.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 459,140 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (314 lines) | stat: -rw-r--r-- 13,557 bytes parent folder | download
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
=== tests/cases/compiler/computedEnumTypeWidening.ts ===
declare function computed(x: number): number;
>computed : Symbol(computed, Decl(computedEnumTypeWidening.ts, 0, 0))
>x : Symbol(x, Decl(computedEnumTypeWidening.ts, 0, 26))

enum E {
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))

    A = computed(0),
>A : Symbol(E.A, Decl(computedEnumTypeWidening.ts, 2, 8))
>computed : Symbol(computed, Decl(computedEnumTypeWidening.ts, 0, 0))

    B = computed(1),
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>computed : Symbol(computed, Decl(computedEnumTypeWidening.ts, 0, 0))

    C = computed(2),
>C : Symbol(E.C, Decl(computedEnumTypeWidening.ts, 4, 20))
>computed : Symbol(computed, Decl(computedEnumTypeWidening.ts, 0, 0))

    D = computed(3),
>D : Symbol(E.D, Decl(computedEnumTypeWidening.ts, 5, 20))
>computed : Symbol(computed, Decl(computedEnumTypeWidening.ts, 0, 0))
}

function f1() {
>f1 : Symbol(f1, Decl(computedEnumTypeWidening.ts, 7, 1))

    const c1 = E.B;  // Fresh E.B
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 10, 9))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

    let v1 = c1;  // E
>v1 : Symbol(v1, Decl(computedEnumTypeWidening.ts, 11, 7))
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 10, 9))

    const c2 = c1;  // Fresh E.B
>c2 : Symbol(c2, Decl(computedEnumTypeWidening.ts, 12, 9))
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 10, 9))

    let v2 = c2;  // E
>v2 : Symbol(v2, Decl(computedEnumTypeWidening.ts, 13, 7))
>c2 : Symbol(c2, Decl(computedEnumTypeWidening.ts, 12, 9))

    const c3: E.B = E.B;  // E.B
>c3 : Symbol(c3, Decl(computedEnumTypeWidening.ts, 14, 9))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

    let v3 = c3;  // E.B
>v3 : Symbol(v3, Decl(computedEnumTypeWidening.ts, 15, 7))
>c3 : Symbol(c3, Decl(computedEnumTypeWidening.ts, 14, 9))

    const c4: E.B = c1;  // E.B
>c4 : Symbol(c4, Decl(computedEnumTypeWidening.ts, 16, 9))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 10, 9))

    let v4 = c4;  // E.B
>v4 : Symbol(v4, Decl(computedEnumTypeWidening.ts, 17, 7))
>c4 : Symbol(c4, Decl(computedEnumTypeWidening.ts, 16, 9))
}

function f2(cond: boolean) {
>f2 : Symbol(f2, Decl(computedEnumTypeWidening.ts, 18, 1))
>cond : Symbol(cond, Decl(computedEnumTypeWidening.ts, 20, 12))

    const c1 = cond ? E.A : E.B;  // Fresh E.A | fresh E.B
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 21, 9))
>cond : Symbol(cond, Decl(computedEnumTypeWidening.ts, 20, 12))
>E.A : Symbol(E.A, Decl(computedEnumTypeWidening.ts, 2, 8))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>A : Symbol(E.A, Decl(computedEnumTypeWidening.ts, 2, 8))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

    const c2: E.A | E.B = c1;  // E.A | E.B
>c2 : Symbol(c2, Decl(computedEnumTypeWidening.ts, 22, 9))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>A : Symbol(E.A, Decl(computedEnumTypeWidening.ts, 2, 8))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 21, 9))

    const c3 = cond ? c1 : c2;  // E.A | E.B
>c3 : Symbol(c3, Decl(computedEnumTypeWidening.ts, 23, 9))
>cond : Symbol(cond, Decl(computedEnumTypeWidening.ts, 20, 12))
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 21, 9))
>c2 : Symbol(c2, Decl(computedEnumTypeWidening.ts, 22, 9))

    const c4 = cond ? c3 : E.C;  // E.A | E.B | fresh E.C
>c4 : Symbol(c4, Decl(computedEnumTypeWidening.ts, 24, 9))
>cond : Symbol(cond, Decl(computedEnumTypeWidening.ts, 20, 12))
>c3 : Symbol(c3, Decl(computedEnumTypeWidening.ts, 23, 9))
>E.C : Symbol(E.C, Decl(computedEnumTypeWidening.ts, 4, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>C : Symbol(E.C, Decl(computedEnumTypeWidening.ts, 4, 20))

    const c5: E.A | E.B | E.C = c4; // E.A | E.B | E.C
>c5 : Symbol(c5, Decl(computedEnumTypeWidening.ts, 25, 9))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>A : Symbol(E.A, Decl(computedEnumTypeWidening.ts, 2, 8))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>C : Symbol(E.C, Decl(computedEnumTypeWidening.ts, 4, 20))
>c4 : Symbol(c4, Decl(computedEnumTypeWidening.ts, 24, 9))

    let v1 = c1;  // E
>v1 : Symbol(v1, Decl(computedEnumTypeWidening.ts, 26, 7))
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 21, 9))

    let v2 = c2;  // E.A | E.B
>v2 : Symbol(v2, Decl(computedEnumTypeWidening.ts, 27, 7))
>c2 : Symbol(c2, Decl(computedEnumTypeWidening.ts, 22, 9))

    let v3 = c3;  // E.A | E.B
>v3 : Symbol(v3, Decl(computedEnumTypeWidening.ts, 28, 7))
>c3 : Symbol(c3, Decl(computedEnumTypeWidening.ts, 23, 9))

    let v4 = c4;  // E
>v4 : Symbol(v4, Decl(computedEnumTypeWidening.ts, 29, 7))
>c4 : Symbol(c4, Decl(computedEnumTypeWidening.ts, 24, 9))

    let v5 = c5;  // E.A | E.B | E.C
>v5 : Symbol(v5, Decl(computedEnumTypeWidening.ts, 30, 7))
>c5 : Symbol(c5, Decl(computedEnumTypeWidening.ts, 25, 9))
}

function f3() {
>f3 : Symbol(f3, Decl(computedEnumTypeWidening.ts, 31, 1))

    const c1 = E.B;
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 34, 9))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

    let v1 = c1;  // E
>v1 : Symbol(v1, Decl(computedEnumTypeWidening.ts, 35, 7))
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 34, 9))

    const c2: E.B = E.B;
>c2 : Symbol(c2, Decl(computedEnumTypeWidening.ts, 36, 9))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

    let v2 = c2;  // E.B
>v2 : Symbol(v2, Decl(computedEnumTypeWidening.ts, 37, 7))
>c2 : Symbol(c2, Decl(computedEnumTypeWidening.ts, 36, 9))

    const c3 = E.B as E.B;
>c3 : Symbol(c3, Decl(computedEnumTypeWidening.ts, 38, 9))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

    let v3 = c3;  // E.B
>v3 : Symbol(v3, Decl(computedEnumTypeWidening.ts, 39, 7))
>c3 : Symbol(c3, Decl(computedEnumTypeWidening.ts, 38, 9))

    const c4 = <E.B>E.B;
>c4 : Symbol(c4, Decl(computedEnumTypeWidening.ts, 40, 9))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

    let v4 = c4;  // E.B
>v4 : Symbol(v4, Decl(computedEnumTypeWidening.ts, 41, 7))
>c4 : Symbol(c4, Decl(computedEnumTypeWidening.ts, 40, 9))

    const c5 = E.B as const;
>c5 : Symbol(c5, Decl(computedEnumTypeWidening.ts, 42, 9))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>const : Symbol(const)

    let v5 = c5;  // E.B
>v5 : Symbol(v5, Decl(computedEnumTypeWidening.ts, 43, 7))
>c5 : Symbol(c5, Decl(computedEnumTypeWidening.ts, 42, 9))
}

declare enum E2 { A, B, C, D }
>E2 : Symbol(E2, Decl(computedEnumTypeWidening.ts, 44, 1))
>A : Symbol(E2.A, Decl(computedEnumTypeWidening.ts, 46, 17))
>B : Symbol(E2.B, Decl(computedEnumTypeWidening.ts, 46, 20))
>C : Symbol(E2.C, Decl(computedEnumTypeWidening.ts, 46, 23))
>D : Symbol(E2.D, Decl(computedEnumTypeWidening.ts, 46, 26))

function f4() {
>f4 : Symbol(f4, Decl(computedEnumTypeWidening.ts, 46, 30))

    const c1 = E2.B;  // Fresh E2.B
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 49, 9))
>E2.B : Symbol(E2.B, Decl(computedEnumTypeWidening.ts, 46, 20))
>E2 : Symbol(E2, Decl(computedEnumTypeWidening.ts, 44, 1))
>B : Symbol(E2.B, Decl(computedEnumTypeWidening.ts, 46, 20))

    let v1 = E.B;  // E2
>v1 : Symbol(v1, Decl(computedEnumTypeWidening.ts, 50, 7))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
}

const c1 = E.B;
>c1 : Symbol(c1, Decl(computedEnumTypeWidening.ts, 53, 5))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

const c2 = E.B as const;
>c2 : Symbol(c2, Decl(computedEnumTypeWidening.ts, 54, 5))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>const : Symbol(const)

let v1 = E.B;
>v1 : Symbol(v1, Decl(computedEnumTypeWidening.ts, 55, 3))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

let v2 = E.B as const;
>v2 : Symbol(v2, Decl(computedEnumTypeWidening.ts, 56, 3))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>const : Symbol(const)

class C {
>C : Symbol(C, Decl(computedEnumTypeWidening.ts, 56, 22))

  p1 = E.B;
>p1 : Symbol(C.p1, Decl(computedEnumTypeWidening.ts, 58, 9))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

  p2 = E.B as const;
>p2 : Symbol(C.p2, Decl(computedEnumTypeWidening.ts, 59, 11))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>const : Symbol(const)

  readonly p3 = E.B;
>p3 : Symbol(C.p3, Decl(computedEnumTypeWidening.ts, 60, 20))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))

  readonly p4 = E.B as const;
>p4 : Symbol(C.p4, Decl(computedEnumTypeWidening.ts, 61, 20))
>E.B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>E : Symbol(E, Decl(computedEnumTypeWidening.ts, 0, 45))
>B : Symbol(E.B, Decl(computedEnumTypeWidening.ts, 3, 20))
>const : Symbol(const)
}

// Repro from #52531

enum MyEnum { A, B, C }
>MyEnum : Symbol(MyEnum, Decl(computedEnumTypeWidening.ts, 63, 1))
>A : Symbol(MyEnum.A, Decl(computedEnumTypeWidening.ts, 67, 13))
>B : Symbol(MyEnum.B, Decl(computedEnumTypeWidening.ts, 67, 16))
>C : Symbol(MyEnum.C, Decl(computedEnumTypeWidening.ts, 67, 19))

let val1 = MyEnum.A;
>val1 : Symbol(val1, Decl(computedEnumTypeWidening.ts, 69, 3))
>MyEnum.A : Symbol(MyEnum.A, Decl(computedEnumTypeWidening.ts, 67, 13))
>MyEnum : Symbol(MyEnum, Decl(computedEnumTypeWidening.ts, 63, 1))
>A : Symbol(MyEnum.A, Decl(computedEnumTypeWidening.ts, 67, 13))

val1 = MyEnum.B;
>val1 : Symbol(val1, Decl(computedEnumTypeWidening.ts, 69, 3))
>MyEnum.B : Symbol(MyEnum.B, Decl(computedEnumTypeWidening.ts, 67, 16))
>MyEnum : Symbol(MyEnum, Decl(computedEnumTypeWidening.ts, 63, 1))
>B : Symbol(MyEnum.B, Decl(computedEnumTypeWidening.ts, 67, 16))

declare enum MyDeclaredEnum { A, B, C }
>MyDeclaredEnum : Symbol(MyDeclaredEnum, Decl(computedEnumTypeWidening.ts, 70, 16))
>A : Symbol(MyDeclaredEnum.A, Decl(computedEnumTypeWidening.ts, 72, 29))
>B : Symbol(MyDeclaredEnum.B, Decl(computedEnumTypeWidening.ts, 72, 32))
>C : Symbol(MyDeclaredEnum.C, Decl(computedEnumTypeWidening.ts, 72, 35))

let val2 = MyDeclaredEnum.A;
>val2 : Symbol(val2, Decl(computedEnumTypeWidening.ts, 74, 3))
>MyDeclaredEnum.A : Symbol(MyDeclaredEnum.A, Decl(computedEnumTypeWidening.ts, 72, 29))
>MyDeclaredEnum : Symbol(MyDeclaredEnum, Decl(computedEnumTypeWidening.ts, 70, 16))
>A : Symbol(MyDeclaredEnum.A, Decl(computedEnumTypeWidening.ts, 72, 29))

val2 = MyDeclaredEnum.B;
>val2 : Symbol(val2, Decl(computedEnumTypeWidening.ts, 74, 3))
>MyDeclaredEnum.B : Symbol(MyDeclaredEnum.B, Decl(computedEnumTypeWidening.ts, 72, 32))
>MyDeclaredEnum : Symbol(MyDeclaredEnum, Decl(computedEnumTypeWidening.ts, 70, 16))
>B : Symbol(MyDeclaredEnum.B, Decl(computedEnumTypeWidening.ts, 72, 32))