File tree 2 files changed +17
-7
lines changed 2 files changed +17
-7
lines changed Original file line number Diff line number Diff line change 1
1
from mypyc .ir .ops import ERR_MAGIC
2
2
from mypyc .ir .rtypes import object_rprimitive
3
- from mypyc .primitives .registry import function_op
3
+ from mypyc .primitives .registry import ERR_NEG_INT , function_op
4
4
5
5
# Weakref operations
6
6
11
11
c_function_name = "PyWeakref_NewRef" ,
12
12
error_kind = ERR_MAGIC ,
13
13
)
14
+
15
+ deref_op = function_op (
16
+ name = "weakref.ReferenceType.__call__" ,
17
+ arg_types = [object_rprimitive ],
18
+ return_type = object_rprimitive ,
19
+ c_function_name = "PyWeakref_GetRef" ,
20
+ error_kind = ERR_NEG_INT ,
21
+ )
Original file line number Diff line number Diff line change 2
2
import weakref
3
3
from typing import Any, Callable
4
4
def f(x: object, cb: Callable[[object], Any]) -> object:
5
- return weakref.ref(x, cb)
5
+ return weakref.ref(x, cb)()
6
6
7
7
[out]
8
8
def f(x, cb):
9
- x, cb, r0 :: object
9
+ x, cb, r0, r1 :: object
10
10
L0:
11
11
r0 = PyWeakref_NewRef(x, cb)
12
- return r0
12
+ r1 = PyWeakref_GetRef(r0)
13
+ return r1
13
14
14
15
[case testFromWeakrefRefCallback]
15
16
from typing import Any, Callable
16
17
from weakref import ref
17
18
def f(x: object, cb: Callable[[object], Any]) -> object:
18
- return ref(x, cb)
19
+ return ref(x, cb)()
19
20
20
21
[out]
21
22
def f(x, cb):
22
- x, cb, r0 :: object
23
+ x, cb, r0, r1 :: object
23
24
L0:
24
25
r0 = PyWeakref_NewRef(x, cb)
25
- return r0
26
+ r1 = PyWeakref_GetRef(r0)
27
+ return r1
You can’t perform that action at this time.
0 commit comments