blob: 5126ca213d261f233f49533b8be1e520f95db709 [file] [log] [blame]
[case testListGet]
from typing import List
def f(x: List[int]) -> int:
return x[0]
[out]
def f(x):
x :: list
r0 :: object
r1 :: int
L0:
r0 = CPyList_GetItemShort(x, 0)
r1 = unbox(int, r0)
return r1
[case testListOfListGet]
from typing import List
def f(x: List[List[int]]) -> List[int]:
return x[0]
[out]
def f(x):
x :: list
r0 :: object
r1 :: list
L0:
r0 = CPyList_GetItemShort(x, 0)
r1 = cast(list, r0)
return r1
[case testListOfListGet2]
from typing import List
def f(x: List[List[int]]) -> int:
return x[0][1]
[out]
def f(x):
x :: list
r0 :: object
r1 :: list
r2 :: object
r3 :: int
L0:
r0 = CPyList_GetItemShort(x, 0)
r1 = cast(list, r0)
r2 = CPyList_GetItemShort(r1, 2)
r3 = unbox(int, r2)
return r3
[case testListSet]
from typing import List
def f(x: List[int]) -> None:
x[0] = 1
[out]
def f(x):
x :: list
r0 :: object
r1 :: bit
L0:
r0 = box(short_int, 2)
r1 = CPyList_SetItem(x, 0, r0)
return 1
[case testNewListEmpty]
from typing import List
def f() -> None:
x = [] # type: List[int]
[out]
def f():
r0, x :: list
L0:
r0 = PyList_New(0)
x = r0
return 1
[case testNewListTwoItems]
from typing import List
def f() -> None:
x: List[int] = [1, 2]
[out]
def f():
r0 :: list
r1, r2 :: object
r3, r4, r5 :: ptr
x :: list
L0:
r0 = PyList_New(2)
r1 = box(short_int, 2)
r2 = box(short_int, 4)
r3 = get_element_ptr r0 ob_item :: PyListObject
r4 = load_mem r3, r0 :: ptr*
set_mem r4, r1, r0 :: builtins.object*
r5 = r4 + WORD_SIZE*1
set_mem r5, r2, r0 :: builtins.object*
x = r0
return 1
[case testListMultiply]
from typing import List
def f(a: List[int]) -> None:
b = a * 2
b = 3 * [4]
[out]
def f(a):
a, r0, b, r1 :: list
r2 :: object
r3, r4 :: ptr
r5 :: list
L0:
r0 = CPySequence_Multiply(a, 4)
b = r0
r1 = PyList_New(1)
r2 = box(short_int, 8)
r3 = get_element_ptr r1 ob_item :: PyListObject
r4 = load_mem r3, r1 :: ptr*
set_mem r4, r2, r1 :: builtins.object*
r5 = CPySequence_RMultiply(6, r1)
b = r5
return 1
[case testListLen]
from typing import List
def f(a: List[int]) -> int:
return len(a)
[out]
def f(a):
a :: list
r0 :: ptr
r1 :: native_int
r2 :: short_int
L0:
r0 = get_element_ptr a ob_size :: PyVarObject
r1 = load_mem r0, a :: native_int*
r2 = r1 << 1
return r2
[case testListAppend]
from typing import List
def f(a: List[int], x: int) -> None:
a.append(x)
[out]
def f(a, x):
a :: list
x :: int
r0 :: object
r1 :: int32
r2 :: bit
L0:
r0 = box(int, x)
r1 = PyList_Append(a, r0)
r2 = r1 >= 0 :: signed
return 1
[case testIndexLvalue]
from typing import List
def increment(l: List[int]) -> List[int]:
for i in range(len(l)):
l[i] += 1
return l
[out]
def increment(l):
l :: list
r0 :: ptr
r1 :: native_int
r2, r3 :: short_int
i :: int
r4 :: bit
r5, r6, r7 :: object
r8 :: bit
r9 :: short_int
L0:
r0 = get_element_ptr l ob_size :: PyVarObject
r1 = load_mem r0, l :: native_int*
r2 = r1 << 1
r3 = 0
i = r3
L1:
r4 = r3 < r2 :: signed
if r4 goto L2 else goto L4 :: bool
L2:
r5 = CPyList_GetItem(l, i)
r6 = box(short_int, 2)
r7 = PyNumber_InPlaceAdd(r5, r6)
r8 = CPyList_SetItem(l, i, r7)
L3:
r9 = r3 + 2
r3 = r9
i = r9
goto L1
L4:
return l
[case testListDisplay]
from typing import List
def f(x: List[int], y: List[int]) -> List[int]:
return [1, 2, *x, *y, 3]
[out]
def f(x, y):
x, y, r0 :: list
r1, r2 :: object
r3, r4, r5 :: ptr
r6, r7, r8 :: object
r9 :: int32
r10 :: bit
L0:
r0 = PyList_New(2)
r1 = box(short_int, 2)
r2 = box(short_int, 4)
r3 = get_element_ptr r0 ob_item :: PyListObject
r4 = load_mem r3, r0 :: ptr*
set_mem r4, r1, r0 :: builtins.object*
r5 = r4 + WORD_SIZE*1
set_mem r5, r2, r0 :: builtins.object*
r6 = CPyList_Extend(r0, x)
r7 = CPyList_Extend(r0, y)
r8 = box(short_int, 6)
r9 = PyList_Append(r0, r8)
r10 = r9 >= 0 :: signed
return r0
[case testListIn]
from typing import List
def f(x: List[int], y: int) -> bool:
return y in x
[out]
def f(x, y):
x :: list
y :: int
r0 :: object
r1 :: int32
r2 :: bit
r3 :: bool
L0:
r0 = box(int, y)
r1 = PySequence_Contains(x, r0)
r2 = r1 >= 0 :: signed
r3 = truncate r1: int32 to builtins.bool
return r3
[case testListInsert]
from typing import List
def f(x: List[int], y: int) -> None:
x.insert(0, y)
[out]
def f(x, y):
x :: list
y :: int
r0 :: object
r1 :: int32
r2 :: bit
L0:
r0 = box(int, y)
r1 = CPyList_Insert(x, 0, r0)
r2 = r1 >= 0 :: signed
return 1