init
This commit is contained in:
commit
38355d2442
9083 changed files with 1225834 additions and 0 deletions
|
|
@ -0,0 +1,178 @@
|
|||
-- Generate ops related to Any types
|
||||
|
||||
|
||||
[case testCoerceAnyInCallsAndReturn]
|
||||
from typing import Any
|
||||
def f(x: Any) -> Any:
|
||||
return g(x)
|
||||
def g(x: int) -> int:
|
||||
return f(x)
|
||||
[out]
|
||||
def f(x):
|
||||
x :: object
|
||||
r0, r1 :: int
|
||||
r2 :: object
|
||||
L0:
|
||||
r0 = unbox(int, x)
|
||||
r1 = g(r0)
|
||||
r2 = box(int, r1)
|
||||
return r2
|
||||
def g(x):
|
||||
x :: int
|
||||
r0, r1 :: object
|
||||
r2 :: int
|
||||
L0:
|
||||
r0 = box(int, x)
|
||||
r1 = f(r0)
|
||||
r2 = unbox(int, r1)
|
||||
return r2
|
||||
|
||||
[case testCoerceAnyInAssignment]
|
||||
from typing import Any, Tuple
|
||||
class C:
|
||||
a: Any
|
||||
n: int
|
||||
def f(a: Any, n: int, c: C) -> None:
|
||||
c.a = n
|
||||
c.n = a
|
||||
a = n
|
||||
n = a
|
||||
a.a = n
|
||||
[out]
|
||||
def f(a, n, c):
|
||||
a :: object
|
||||
n :: int
|
||||
c :: __main__.C
|
||||
r0 :: object
|
||||
r1 :: bool
|
||||
r2 :: int
|
||||
r3 :: bool
|
||||
r4 :: object
|
||||
r5 :: int
|
||||
r6 :: str
|
||||
r7 :: object
|
||||
r8 :: int32
|
||||
r9 :: bit
|
||||
L0:
|
||||
r0 = box(int, n)
|
||||
c.a = r0; r1 = is_error
|
||||
r2 = unbox(int, a)
|
||||
c.n = r2; r3 = is_error
|
||||
r4 = box(int, n)
|
||||
a = r4
|
||||
r5 = unbox(int, a)
|
||||
n = r5
|
||||
r6 = 'a'
|
||||
r7 = box(int, n)
|
||||
r8 = PyObject_SetAttr(a, r6, r7)
|
||||
r9 = r8 >= 0 :: signed
|
||||
return 1
|
||||
|
||||
[case testCoerceAnyInOps]
|
||||
from typing import Any, List
|
||||
def f1(a: Any, n: int) -> None:
|
||||
a + n
|
||||
n + a
|
||||
def f2(a: Any, n: int, l: List[int]) -> None:
|
||||
a[n]
|
||||
l[a]
|
||||
a[n] = n
|
||||
l[a] = n
|
||||
l[n] = a
|
||||
[a, n]
|
||||
def f3(a: Any, n: int) -> None:
|
||||
a += n
|
||||
n += a
|
||||
[out]
|
||||
def f1(a, n):
|
||||
a :: object
|
||||
n :: int
|
||||
r0, r1, r2, r3 :: object
|
||||
L0:
|
||||
r0 = box(int, n)
|
||||
r1 = PyNumber_Add(a, r0)
|
||||
r2 = box(int, n)
|
||||
r3 = PyNumber_Add(r2, a)
|
||||
return 1
|
||||
def f2(a, n, l):
|
||||
a :: object
|
||||
n :: int
|
||||
l :: list
|
||||
r0, r1, r2, r3, r4 :: object
|
||||
r5 :: int32
|
||||
r6 :: bit
|
||||
r7 :: object
|
||||
r8 :: int32
|
||||
r9, r10 :: bit
|
||||
r11 :: list
|
||||
r12 :: object
|
||||
r13, r14, r15 :: ptr
|
||||
L0:
|
||||
r0 = box(int, n)
|
||||
r1 = PyObject_GetItem(a, r0)
|
||||
r2 = PyObject_GetItem(l, a)
|
||||
r3 = box(int, n)
|
||||
r4 = box(int, n)
|
||||
r5 = PyObject_SetItem(a, r3, r4)
|
||||
r6 = r5 >= 0 :: signed
|
||||
r7 = box(int, n)
|
||||
r8 = PyObject_SetItem(l, a, r7)
|
||||
r9 = r8 >= 0 :: signed
|
||||
r10 = CPyList_SetItem(l, n, a)
|
||||
r11 = PyList_New(2)
|
||||
r12 = box(int, n)
|
||||
r13 = get_element_ptr r11 ob_item :: PyListObject
|
||||
r14 = load_mem r13 :: ptr*
|
||||
set_mem r14, a :: builtins.object*
|
||||
r15 = r14 + WORD_SIZE*1
|
||||
set_mem r15, r12 :: builtins.object*
|
||||
keep_alive r11
|
||||
return 1
|
||||
def f3(a, n):
|
||||
a :: object
|
||||
n :: int
|
||||
r0, r1, r2, r3 :: object
|
||||
r4 :: int
|
||||
L0:
|
||||
r0 = box(int, n)
|
||||
r1 = PyNumber_InPlaceAdd(a, r0)
|
||||
a = r1
|
||||
r2 = box(int, n)
|
||||
r3 = PyNumber_InPlaceAdd(r2, a)
|
||||
r4 = unbox(int, r3)
|
||||
n = r4
|
||||
return 1
|
||||
|
||||
[case testCoerceAnyInConditionalExpr]
|
||||
from typing import Any
|
||||
def f4(a: Any, n: int, b: bool) -> None:
|
||||
a = a if b else n
|
||||
n = n if b else a
|
||||
[out]
|
||||
def f4(a, n, b):
|
||||
a :: object
|
||||
n :: int
|
||||
b :: bool
|
||||
r0, r1, r2, r3 :: object
|
||||
r4 :: int
|
||||
L0:
|
||||
if b goto L1 else goto L2 :: bool
|
||||
L1:
|
||||
r0 = a
|
||||
goto L3
|
||||
L2:
|
||||
r1 = box(int, n)
|
||||
r0 = r1
|
||||
L3:
|
||||
a = r0
|
||||
if b goto L4 else goto L5 :: bool
|
||||
L4:
|
||||
r2 = box(int, n)
|
||||
r3 = r2
|
||||
goto L6
|
||||
L5:
|
||||
r3 = a
|
||||
L6:
|
||||
r4 = unbox(int, r3)
|
||||
n = r4
|
||||
return 1
|
||||
Loading…
Add table
Add a link
Reference in a new issue