@@ -36,10 +36,12 @@ def f() -> None:
3636 d = {} # type: Dict[bool, int]
3737[out]
3838def f():
39- r0, d :: dict[exact]
39+ r0 :: dict[exact]
40+ r1, d :: dict
4041L0:
4142 r0 = PyDict_New()
42- d = r0
43+ r1 = cast(dict, r0)
44+ d = r1
4345 return 1
4446
4547[case testNewEmptyDictViaFunc]
@@ -49,10 +51,12 @@ def f() -> None:
4951
5052[out]
5153def f():
52- r0, d :: dict[exact]
54+ r0 :: dict[exact]
55+ r1, d :: dict
5356L0:
5457 r0 = PyDict_New()
55- d = r0
58+ r1 = cast(dict, r0)
59+ d = r1
5660 return 1
5761
5862[case testNewDictWithValues]
@@ -63,13 +67,15 @@ def f(x):
6367 x :: object
6468 r0 :: str
6569 r1, r2 :: object
66- r3, d :: dict[exact]
70+ r3 :: dict[exact]
71+ r4, d :: dict
6772L0:
6873 r0 = ''
6974 r1 = object 1
7075 r2 = object 2
7176 r3 = CPyDict_Build(2, r1, r2, r0, x)
72- d = r3
77+ r4 = cast(dict, r3)
78+ d = r4
7379 return 1
7480
7581[case testInDict]
@@ -81,7 +87,7 @@ def f(d: Dict[int, int]) -> bool:
8187 return False
8288[out]
8389def f(d):
84- d :: dict[exact]
90+ d :: dict
8591 r0 :: object
8692 r1 :: i32
8793 r2 :: bit
@@ -108,7 +114,7 @@ def f(d: Dict[int, int]) -> bool:
108114 return False
109115[out]
110116def f(d):
111- d :: dict[exact]
117+ d :: dict
112118 r0 :: object
113119 r1 :: i32
114120 r2 :: bit
@@ -133,11 +139,11 @@ def f(a: Dict[int, int], b: Dict[int, int]) -> None:
133139 a.update(b)
134140[out]
135141def f(a, b):
136- a, b :: dict[exact]
142+ a, b :: dict
137143 r0 :: i32
138144 r1 :: bit
139145L0:
140- r0 = PyDict_Update (a, b)
146+ r0 = CPyDict_Update (a, b)
141147 r1 = r0 >= 0 :: signed
142148 return 1
143149
@@ -149,10 +155,10 @@ def increment(d: Dict[str, int]) -> Dict[str, int]:
149155 return d
150156[out]
151157def increment(d):
152- d :: dict[exact]
158+ d :: dict
153159 r0 :: short_int
154160 r1 :: native_int
155- r2 :: dict[exact]
161+ r2 :: object
156162 r3 :: tuple[bool, short_int, object]
157163 r4 :: short_int
158164 r5 :: bool
@@ -164,9 +170,9 @@ def increment(d):
164170L0:
165171 r0 = 0
166172 r1 = PyDict_Size(d)
167- r2 = _CPyDict_GetIterUnsafe (d)
173+ r2 = CPyDict_GetKeysIter (d)
168174L1:
169- r3 = CPyDict_NextKeyUnsafe (r2, r0)
175+ r3 = CPyDict_NextKey (r2, r0)
170176 r4 = r3[1]
171177 r0 = r4
172178 r5 = r3[0]
@@ -175,13 +181,13 @@ L2:
175181 r6 = r3[2]
176182 r7 = cast(str, r6)
177183 k = r7
178- r8 = CPyDict_GetItemUnsafe (d, k)
184+ r8 = CPyDict_GetItem (d, k)
179185 r9 = object 1
180186 r10 = PyNumber_InPlaceAdd(r8, r9)
181- r11 = PyDict_SetItem (d, k, r10)
187+ r11 = CPyDict_SetItem (d, k, r10)
182188 r12 = r11 >= 0 :: signed
183189L3:
184- r13 = CPyDict_CheckSizeUnsafe (d, r1)
190+ r13 = CPyDict_CheckSize (d, r1)
185191 goto L1
186192L4:
187193 r14 = CPy_NoErrOccurred()
@@ -195,25 +201,29 @@ def f(x: str, y: Dict[str, int]) -> Dict[str, int]:
195201[out]
196202def f(x, y):
197203 x :: str
198- y :: dict[exact]
204+ y :: dict
199205 r0 :: str
200206 r1 :: object
201207 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
207215L0:
208216 r0 = 'z'
209217 r1 = object 2
210218 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
217227
218228[case testDictIterationMethods]
219229from typing import Dict, TypedDict, Union
@@ -239,10 +249,10 @@ def typeddict(d: Person) -> None:
239249[typing fixtures/typing-full.pyi]
240250[out]
241251def print_dict_methods(d1, d2):
242- d1, d2 :: dict[exact]
252+ d1, d2 :: dict
243253 r0 :: short_int
244254 r1 :: native_int
245- r2 :: dict[exact]
255+ r2 :: object
246256 r3 :: tuple[bool, short_int, object]
247257 r4 :: short_int
248258 r5 :: bool
@@ -255,7 +265,7 @@ def print_dict_methods(d1, d2):
255265 r12, r13 :: bit
256266 r14 :: short_int
257267 r15 :: native_int
258- r16 :: dict[exact]
268+ r16 :: object
259269 r17 :: tuple[bool, short_int, object, object]
260270 r18 :: short_int
261271 r19 :: bool
@@ -267,9 +277,9 @@ def print_dict_methods(d1, d2):
267277L0:
268278 r0 = 0
269279 r1 = PyDict_Size(d1)
270- r2 = _CPyDict_GetIterUnsafe (d1)
280+ r2 = CPyDict_GetValuesIter (d1)
271281L1:
272- r3 = CPyDict_NextValueUnsafe (r2, r0)
282+ r3 = CPyDict_NextValue (r2, r0)
273283 r4 = r3[1]
274284 r0 = r4
275285 r5 = r3[0]
@@ -287,16 +297,16 @@ L3:
287297 return 1
288298L4:
289299L5:
290- r12 = CPyDict_CheckSizeUnsafe (d1, r1)
300+ r12 = CPyDict_CheckSize (d1, r1)
291301 goto L1
292302L6:
293303 r13 = CPy_NoErrOccurred()
294304L7:
295305 r14 = 0
296306 r15 = PyDict_Size(d2)
297- r16 = _CPyDict_GetIterUnsafe (d2)
307+ r16 = CPyDict_GetItemsIter (d2)
298308L8:
299- r17 = CPyDict_NextItemUnsafe (r16, r14)
309+ r17 = CPyDict_NextItem (r16, r14)
300310 r18 = r17[1]
301311 r14 = r18
302312 r19 = r17[0]
@@ -309,73 +319,76 @@ L9:
309319 k = r22
310320 v = r23
311321 r24 = box(int, k)
312- r25 = CPyDict_GetItemUnsafe (d2, r24)
322+ r25 = CPyDict_GetItem (d2, r24)
313323 r26 = box(int, v)
314324 r27 = PyNumber_InPlaceAdd(r25, r26)
315325 r28 = box(int, k)
316- r29 = PyDict_SetItem (d2, r28, r27)
326+ r29 = CPyDict_SetItem (d2, r28, r27)
317327 r30 = r29 >= 0 :: signed
318328L10:
319- r31 = CPyDict_CheckSizeUnsafe (d2, r15)
329+ r31 = CPyDict_CheckSize (d2, r15)
320330 goto L8
321331L11:
322332 r32 = CPy_NoErrOccurred()
323333L12:
324334 return 1
325335def 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]
336348 k :: str
337349 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
346358L0:
347359 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)
352365L1:
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
358371L2:
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)
369382 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
374387L3:
375- r19 = CPyDict_CheckSizeUnsafe (d, r2 )
388+ r20 = CPyDict_CheckSize (d, r3 )
376389 goto L1
377390L4:
378- r20 = CPy_NoErrOccurred()
391+ r21 = CPy_NoErrOccurred()
379392L5:
380393 return 1
381394def typeddict(d):
@@ -440,10 +453,10 @@ def f(d: Dict[int, int]) -> None:
440453 return d.clear()
441454[out]
442455def f(d):
443- d :: dict[exact]
456+ d :: dict
444457 r0 :: bit
445458L0:
446- r0 = PyDict_Clear (d)
459+ r0 = CPyDict_Clear (d)
447460 return 1
448461
449462[case testDictCopy]
0 commit comments