@@ -36,10 +36,12 @@ def f() -> None:
36
36
d = {} # type: Dict[bool, int]
37
37
[out]
38
38
def f():
39
- r0, d :: dict[exact]
39
+ r0 :: dict[exact]
40
+ r1, d :: dict
40
41
L0:
41
42
r0 = PyDict_New()
42
- d = r0
43
+ r1 = cast(dict, r0)
44
+ d = r1
43
45
return 1
44
46
45
47
[case testNewEmptyDictViaFunc]
@@ -49,10 +51,12 @@ def f() -> None:
49
51
50
52
[out]
51
53
def f():
52
- r0, d :: dict[exact]
54
+ r0 :: dict[exact]
55
+ r1, d :: dict
53
56
L0:
54
57
r0 = PyDict_New()
55
- d = r0
58
+ r1 = cast(dict, r0)
59
+ d = r1
56
60
return 1
57
61
58
62
[case testNewDictWithValues]
@@ -63,13 +67,15 @@ def f(x):
63
67
x :: object
64
68
r0 :: str
65
69
r1, r2 :: object
66
- r3, d :: dict[exact]
70
+ r3 :: dict[exact]
71
+ r4, d :: dict
67
72
L0:
68
73
r0 = ''
69
74
r1 = object 1
70
75
r2 = object 2
71
76
r3 = CPyDict_Build(2, r1, r2, r0, x)
72
- d = r3
77
+ r4 = cast(dict, r3)
78
+ d = r4
73
79
return 1
74
80
75
81
[case testInDict]
@@ -81,7 +87,7 @@ def f(d: Dict[int, int]) -> bool:
81
87
return False
82
88
[out]
83
89
def f(d):
84
- d :: dict[exact]
90
+ d :: dict
85
91
r0 :: object
86
92
r1 :: i32
87
93
r2 :: bit
@@ -108,7 +114,7 @@ def f(d: Dict[int, int]) -> bool:
108
114
return False
109
115
[out]
110
116
def f(d):
111
- d :: dict[exact]
117
+ d :: dict
112
118
r0 :: object
113
119
r1 :: i32
114
120
r2 :: bit
@@ -133,11 +139,11 @@ def f(a: Dict[int, int], b: Dict[int, int]) -> None:
133
139
a.update(b)
134
140
[out]
135
141
def f(a, b):
136
- a, b :: dict[exact]
142
+ a, b :: dict
137
143
r0 :: i32
138
144
r1 :: bit
139
145
L0:
140
- r0 = PyDict_Update (a, b)
146
+ r0 = CPyDict_Update (a, b)
141
147
r1 = r0 >= 0 :: signed
142
148
return 1
143
149
@@ -149,10 +155,10 @@ def increment(d: Dict[str, int]) -> Dict[str, int]:
149
155
return d
150
156
[out]
151
157
def increment(d):
152
- d :: dict[exact]
158
+ d :: dict
153
159
r0 :: short_int
154
160
r1 :: native_int
155
- r2 :: dict[exact]
161
+ r2 :: object
156
162
r3 :: tuple[bool, short_int, object]
157
163
r4 :: short_int
158
164
r5 :: bool
@@ -164,9 +170,9 @@ def increment(d):
164
170
L0:
165
171
r0 = 0
166
172
r1 = PyDict_Size(d)
167
- r2 = _CPyDict_GetIterUnsafe (d)
173
+ r2 = CPyDict_GetKeysIter (d)
168
174
L1:
169
- r3 = CPyDict_NextKeyUnsafe (r2, r0)
175
+ r3 = CPyDict_NextKey (r2, r0)
170
176
r4 = r3[1]
171
177
r0 = r4
172
178
r5 = r3[0]
@@ -175,13 +181,13 @@ L2:
175
181
r6 = r3[2]
176
182
r7 = cast(str, r6)
177
183
k = r7
178
- r8 = CPyDict_GetItemUnsafe (d, k)
184
+ r8 = CPyDict_GetItem (d, k)
179
185
r9 = object 1
180
186
r10 = PyNumber_InPlaceAdd(r8, r9)
181
- r11 = PyDict_SetItem (d, k, r10)
187
+ r11 = CPyDict_SetItem (d, k, r10)
182
188
r12 = r11 >= 0 :: signed
183
189
L3:
184
- r13 = CPyDict_CheckSizeUnsafe (d, r1)
190
+ r13 = CPyDict_CheckSize (d, r1)
185
191
goto L1
186
192
L4:
187
193
r14 = CPy_NoErrOccurred()
@@ -195,25 +201,29 @@ def f(x: str, y: Dict[str, int]) -> Dict[str, int]:
195
201
[out]
196
202
def f(x, y):
197
203
x :: str
198
- y :: dict[exact]
204
+ y :: dict
199
205
r0 :: str
200
206
r1 :: object
201
207
r2 :: dict[exact]
202
- r3 :: i32
203
- r4 :: bit
204
- r5 :: object
205
- r6 :: i32
206
- r7 :: bit
208
+ r3 :: dict
209
+ r4 :: i32
210
+ r5 :: bit
211
+ r6 :: object
212
+ r7 :: i32
213
+ r8 :: bit
214
+ r9 :: dict
207
215
L0:
208
216
r0 = 'z'
209
217
r1 = object 2
210
218
r2 = CPyDict_Build(1, x, r1)
211
- r3 = PyDict_Update(r2, y)
212
- r4 = r3 >= 0 :: signed
213
- r5 = object 3
214
- r6 = PyDict_SetItem(r2, r0, r5)
215
- r7 = r6 >= 0 :: signed
216
- return r2
219
+ r3 = cast(dict, r2)
220
+ r4 = CPyDict_UpdateInDisplay(r3, y)
221
+ r5 = r4 >= 0 :: signed
222
+ r6 = object 3
223
+ r7 = PyDict_SetItem(r2, r0, r6)
224
+ r8 = r7 >= 0 :: signed
225
+ r9 = cast(dict, r2)
226
+ return r9
217
227
218
228
[case testDictIterationMethods]
219
229
from typing import Dict, TypedDict, Union
@@ -239,10 +249,10 @@ def typeddict(d: Person) -> None:
239
249
[typing fixtures/typing-full.pyi]
240
250
[out]
241
251
def print_dict_methods(d1, d2):
242
- d1, d2 :: dict[exact]
252
+ d1, d2 :: dict
243
253
r0 :: short_int
244
254
r1 :: native_int
245
- r2 :: dict[exact]
255
+ r2 :: object
246
256
r3 :: tuple[bool, short_int, object]
247
257
r4 :: short_int
248
258
r5 :: bool
@@ -255,7 +265,7 @@ def print_dict_methods(d1, d2):
255
265
r12, r13 :: bit
256
266
r14 :: short_int
257
267
r15 :: native_int
258
- r16 :: dict[exact]
268
+ r16 :: object
259
269
r17 :: tuple[bool, short_int, object, object]
260
270
r18 :: short_int
261
271
r19 :: bool
@@ -267,9 +277,9 @@ def print_dict_methods(d1, d2):
267
277
L0:
268
278
r0 = 0
269
279
r1 = PyDict_Size(d1)
270
- r2 = _CPyDict_GetIterUnsafe (d1)
280
+ r2 = CPyDict_GetValuesIter (d1)
271
281
L1:
272
- r3 = CPyDict_NextValueUnsafe (r2, r0)
282
+ r3 = CPyDict_NextValue (r2, r0)
273
283
r4 = r3[1]
274
284
r0 = r4
275
285
r5 = r3[0]
@@ -287,16 +297,16 @@ L3:
287
297
return 1
288
298
L4:
289
299
L5:
290
- r12 = CPyDict_CheckSizeUnsafe (d1, r1)
300
+ r12 = CPyDict_CheckSize (d1, r1)
291
301
goto L1
292
302
L6:
293
303
r13 = CPy_NoErrOccurred()
294
304
L7:
295
305
r14 = 0
296
306
r15 = PyDict_Size(d2)
297
- r16 = _CPyDict_GetIterUnsafe (d2)
307
+ r16 = CPyDict_GetItemsIter (d2)
298
308
L8:
299
- r17 = CPyDict_NextItemUnsafe (r16, r14)
309
+ r17 = CPyDict_NextItem (r16, r14)
300
310
r18 = r17[1]
301
311
r14 = r18
302
312
r19 = r17[0]
@@ -309,73 +319,76 @@ L9:
309
319
k = r22
310
320
v = r23
311
321
r24 = box(int, k)
312
- r25 = CPyDict_GetItemUnsafe (d2, r24)
322
+ r25 = CPyDict_GetItem (d2, r24)
313
323
r26 = box(int, v)
314
324
r27 = PyNumber_InPlaceAdd(r25, r26)
315
325
r28 = box(int, k)
316
- r29 = PyDict_SetItem (d2, r28, r27)
326
+ r29 = CPyDict_SetItem (d2, r28, r27)
317
327
r30 = r29 >= 0 :: signed
318
328
L10:
319
- r31 = CPyDict_CheckSizeUnsafe (d2, r15)
329
+ r31 = CPyDict_CheckSize (d2, r15)
320
330
goto L8
321
331
L11:
322
332
r32 = CPy_NoErrOccurred()
323
333
L12:
324
334
return 1
325
335
def union_of_dicts(d):
326
- d, r0, new :: dict[exact]
327
- r1 :: short_int
328
- r2 :: native_int
329
- r3 :: dict[exact]
330
- r4 :: tuple[bool, short_int, object, object]
331
- r5 :: short_int
332
- r6 :: bool
333
- r7, r8 :: object
334
- r9 :: str
335
- r10 :: union[int, str]
336
+ d :: dict
337
+ r0 :: dict[exact]
338
+ r1, new :: dict
339
+ r2 :: short_int
340
+ r3 :: native_int
341
+ r4 :: object
342
+ r5 :: tuple[bool, short_int, object, object]
343
+ r6 :: short_int
344
+ r7 :: bool
345
+ r8, r9 :: object
346
+ r10 :: str
347
+ r11 :: union[int, str]
336
348
k :: str
337
349
v :: union[int, str]
338
- r11 :: object
339
- r12 :: object[1]
340
- r13 :: object_ptr
341
- r14 :: object
342
- r15 :: int
343
- r16 :: object
344
- r17 :: i32
345
- r18, r19, r20 :: bit
350
+ r12 :: object
351
+ r13 :: object[1]
352
+ r14 :: object_ptr
353
+ r15 :: object
354
+ r16 :: int
355
+ r17 :: object
356
+ r18 :: i32
357
+ r19, r20, r21 :: bit
346
358
L0:
347
359
r0 = PyDict_New()
348
- new = r0
349
- r1 = 0
350
- r2 = PyDict_Size(d)
351
- r3 = _CPyDict_GetIterUnsafe(d)
360
+ r1 = cast(dict, r0)
361
+ new = r1
362
+ r2 = 0
363
+ r3 = PyDict_Size(d)
364
+ r4 = CPyDict_GetItemsIter(d)
352
365
L1:
353
- r4 = CPyDict_NextItemUnsafe(r3, r1 )
354
- r5 = r4 [1]
355
- r1 = r5
356
- r6 = r4 [0]
357
- if r6 goto L2 else goto L4 :: bool
366
+ r5 = CPyDict_NextItem(r4, r2 )
367
+ r6 = r5 [1]
368
+ r2 = r6
369
+ r7 = r5 [0]
370
+ if r7 goto L2 else goto L4 :: bool
358
371
L2:
359
- r7 = r4 [2]
360
- r8 = r4 [3]
361
- r9 = cast(str, r7 )
362
- r10 = cast(union[int, str], r8 )
363
- k = r9
364
- v = r10
365
- r11 = load_address PyLong_Type
366
- r12 = [v]
367
- r13 = load_address r12
368
- r14 = PyObject_Vectorcall(r11, r13 , 1, 0)
372
+ r8 = r5 [2]
373
+ r9 = r5 [3]
374
+ r10 = cast(str, r8 )
375
+ r11 = cast(union[int, str], r9 )
376
+ k = r10
377
+ v = r11
378
+ r12 = load_address PyLong_Type
379
+ r13 = [v]
380
+ r14 = load_address r13
381
+ r15 = PyObject_Vectorcall(r12, r14 , 1, 0)
369
382
keep_alive v
370
- r15 = unbox(int, r14 )
371
- r16 = box(int, r15 )
372
- r17 = PyDict_SetItem (new, k, r16 )
373
- r18 = r17 >= 0 :: signed
383
+ r16 = unbox(int, r15 )
384
+ r17 = box(int, r16 )
385
+ r18 = CPyDict_SetItem (new, k, r17 )
386
+ r19 = r18 >= 0 :: signed
374
387
L3:
375
- r19 = CPyDict_CheckSizeUnsafe (d, r2 )
388
+ r20 = CPyDict_CheckSize (d, r3 )
376
389
goto L1
377
390
L4:
378
- r20 = CPy_NoErrOccurred()
391
+ r21 = CPy_NoErrOccurred()
379
392
L5:
380
393
return 1
381
394
def typeddict(d):
@@ -440,10 +453,10 @@ def f(d: Dict[int, int]) -> None:
440
453
return d.clear()
441
454
[out]
442
455
def f(d):
443
- d :: dict[exact]
456
+ d :: dict
444
457
r0 :: bit
445
458
L0:
446
- r0 = PyDict_Clear (d)
459
+ r0 = CPyDict_Clear (d)
447
460
return 1
448
461
449
462
[case testDictCopy]
0 commit comments