|
2 | 2 | import weakref
|
3 | 3 | from typing import Any, Callable
|
4 | 4 | def f(x: object) -> object:
|
5 |
| - return weakref.ref(x)() |
| 5 | + ref = weakref.ref(x) |
| 6 | + return ref() |
6 | 7 |
|
7 | 8 | [out]
|
8 | 9 | def f(x):
|
9 | 10 | x :: object
|
10 | 11 | r0 :: weakref.ReferenceType
|
11 |
| - r1 :: object |
| 12 | + ref :: object |
| 13 | + r1 :: weakref.ReferenceType |
| 14 | + r2 :: object |
12 | 15 | L0:
|
13 | 16 | r0 = PyWeakref_NewRef(x, 0)
|
14 |
| - r1 = PyWeakref_GetRef(r0) |
15 |
| - return r1 |
| 17 | + ref = r0 |
| 18 | + r1 = cast(weakref.ReferenceType, ref) |
| 19 | + r2 = CPyWeakref_GetRef(r1) |
| 20 | + return r2 |
16 | 21 |
|
17 | 22 | [case testWeakrefRefCallback]
|
18 | 23 | import weakref
|
19 | 24 | from typing import Any, Callable
|
20 | 25 | def f(x: object, cb: Callable[[object], Any]) -> object:
|
21 |
| - return weakref.ref(x, cb)() |
| 26 | + ref = weakref.ref(x, cb) |
| 27 | + return ref() |
22 | 28 |
|
23 | 29 | [out]
|
24 | 30 | def f(x, cb):
|
25 | 31 | x, cb :: object
|
26 | 32 | r0 :: weakref.ReferenceType
|
27 |
| - r1 :: object |
| 33 | + ref :: object |
| 34 | + r1 :: weakref.ReferenceType |
| 35 | + r2 :: object |
28 | 36 | L0:
|
29 | 37 | r0 = PyWeakref_NewRef(x, cb)
|
30 |
| - r1 = PyWeakref_GetRef(r0) |
31 |
| - return r1 |
| 38 | + ref = r0 |
| 39 | + r1 = cast(weakref.ReferenceType, ref) |
| 40 | + r2 = CPyWeakref_GetRef(r1) |
| 41 | + return r2 |
32 | 42 |
|
33 | 43 | [case testFromWeakrefRef]
|
34 | 44 | from typing import Any, Callable
|
35 | 45 | from weakref import ref
|
36 | 46 | def f(x: object) -> object:
|
37 |
| - return ref(x)() |
| 47 | + r = ref(x) |
| 48 | + return r() |
38 | 49 |
|
39 | 50 | [out]
|
40 | 51 | def f(x):
|
41 | 52 | x :: object
|
42 | 53 | r0 :: weakref.ReferenceType
|
43 |
| - r1 :: object |
| 54 | + r :: object |
| 55 | + r1 :: weakref.ReferenceType |
| 56 | + r2 :: object |
44 | 57 | L0:
|
45 | 58 | r0 = PyWeakref_NewRef(x, 0)
|
46 |
| - r1 = PyWeakref_GetRef(r0) |
47 |
| - return r1 |
| 59 | + r = r0 |
| 60 | + r1 = cast(weakref.ReferenceType, r) |
| 61 | + r2 = CPyWeakref_GetRef(r1) |
| 62 | + return r2 |
48 | 63 |
|
49 | 64 | [case testFromWeakrefRefCallback]
|
50 | 65 | from typing import Any, Callable
|
51 | 66 | from weakref import ref
|
52 | 67 | def f(x: object, cb: Callable[[object], Any]) -> object:
|
53 |
| - return ref(x, cb)() |
| 68 | + r = ref(x, cb) |
| 69 | + return r() |
54 | 70 |
|
55 | 71 | [out]
|
56 | 72 | def f(x, cb):
|
57 | 73 | x, cb :: object
|
58 | 74 | r0 :: weakref.ReferenceType
|
59 |
| - r1 :: object |
| 75 | + r :: object |
| 76 | + r1 :: weakref.ReferenceType |
| 77 | + r2 :: object |
60 | 78 | L0:
|
61 | 79 | r0 = PyWeakref_NewRef(x, cb)
|
62 |
| - r1 = PyWeakref_GetRef(r0) |
63 |
| - return r1 |
| 80 | + r = r0 |
| 81 | + r1 = cast(weakref.ReferenceType, r) |
| 82 | + r2 = CPyWeakref_GetRef(r1) |
| 83 | + return r2 |
| 84 | + |
0 commit comments