Skip to content

Commit 537c8af

Browse files
committed
feat(test): test stars
1 parent e9f0451 commit 537c8af

File tree

2 files changed

+134
-0
lines changed

2 files changed

+134
-0
lines changed

mypyc/test-data/irbuild-lists.test

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -901,3 +901,70 @@ L9:
901901
L10:
902902
a = r3
903903
return 1
904+
905+
[case testListBuiltFromStars]
906+
from typing import Final
907+
908+
abc: Final = "abc"
909+
910+
def test() -> None:
911+
a = [str(x) for x in [*abc, *"def", *b"ghi", ("j", "k"), *("l", "m", "n")]]
912+
913+
[out]
914+
def test():
915+
r0, r1 :: str
916+
r2 :: bytes
917+
r3, r4 :: str
918+
r5 :: tuple[str, str]
919+
r6, r7, r8 :: str
920+
r9 :: tuple[str, str, str]
921+
r10 :: list
922+
r11, r12, r13, r14 :: object
923+
r15 :: i32
924+
r16 :: bit
925+
r17, r18 :: object
926+
r19 :: list
927+
r20, r21 :: native_int
928+
r22 :: bit
929+
r23, x :: object
930+
r24 :: str
931+
r25 :: native_int
932+
a :: list
933+
L0:
934+
r0 = 'abc'
935+
r1 = 'def'
936+
r2 = b'ghi'
937+
r3 = 'j'
938+
r4 = 'k'
939+
r5 = (r3, r4)
940+
r6 = 'l'
941+
r7 = 'm'
942+
r8 = 'n'
943+
r9 = (r6, r7, r8)
944+
r10 = PyList_New(0)
945+
r11 = CPyList_Extend(r10, r0)
946+
r12 = CPyList_Extend(r10, r1)
947+
r13 = CPyList_Extend(r10, r2)
948+
r14 = box(tuple[str, str], r5)
949+
r15 = PyList_Append(r10, r14)
950+
r16 = r15 >= 0 :: signed
951+
r17 = box(tuple[str, str, str], r9)
952+
r18 = CPyList_Extend(r10, r17)
953+
r19 = PyList_New(13)
954+
r20 = 0
955+
L1:
956+
r21 = var_object_size r10
957+
r22 = r20 < r21 :: signed
958+
if r22 goto L2 else goto L4 :: bool
959+
L2:
960+
r23 = list_get_item_unsafe r10, r20
961+
x = r23
962+
r24 = PyObject_Str(x)
963+
CPyList_SetItemUnsafe(r19, r20, r24)
964+
L3:
965+
r25 = r20 + 1
966+
r20 = r25
967+
goto L1
968+
L4:
969+
a = r19
970+
return 1

mypyc/test-data/irbuild-tuple.test

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,73 @@ L4:
757757
a = r1
758758
return 1
759759

760+
[case testTupleBuiltFromStars]
761+
from typing import Final
762+
763+
abc: Final = "abc"
764+
765+
def test() -> None:
766+
a = tuple(str(x) for x in [*abc, *"def", *b"ghi", ("j", "k"), *("l", "m", "n")])
767+
768+
[out]
769+
def test():
770+
r0, r1 :: str
771+
r2 :: bytes
772+
r3, r4 :: str
773+
r5 :: tuple[str, str]
774+
r6, r7, r8 :: str
775+
r9 :: tuple[str, str, str]
776+
r10 :: list
777+
r11, r12, r13, r14 :: object
778+
r15 :: i32
779+
r16 :: bit
780+
r17, r18 :: object
781+
r19 :: tuple
782+
r20, r21 :: native_int
783+
r22 :: bit
784+
r23, x :: object
785+
r24 :: str
786+
r25 :: native_int
787+
a :: tuple
788+
L0:
789+
r0 = 'abc'
790+
r1 = 'def'
791+
r2 = b'ghi'
792+
r3 = 'j'
793+
r4 = 'k'
794+
r5 = (r3, r4)
795+
r6 = 'l'
796+
r7 = 'm'
797+
r8 = 'n'
798+
r9 = (r6, r7, r8)
799+
r10 = PyList_New(0)
800+
r11 = CPyList_Extend(r10, r0)
801+
r12 = CPyList_Extend(r10, r1)
802+
r13 = CPyList_Extend(r10, r2)
803+
r14 = box(tuple[str, str], r5)
804+
r15 = PyList_Append(r10, r14)
805+
r16 = r15 >= 0 :: signed
806+
r17 = box(tuple[str, str, str], r9)
807+
r18 = CPyList_Extend(r10, r17)
808+
r19 = PyTuple_New(13)
809+
r20 = 0
810+
L1:
811+
r21 = var_object_size r10
812+
r22 = r20 < r21 :: signed
813+
if r22 goto L2 else goto L4 :: bool
814+
L2:
815+
r23 = list_get_item_unsafe r10, r20
816+
x = r23
817+
r24 = PyObject_Str(x)
818+
CPySequenceTuple_SetItemUnsafe(r19, r20, r24)
819+
L3:
820+
r25 = r20 + 1
821+
r20 = r25
822+
goto L1
823+
L4:
824+
a = r19
825+
return 1
826+
760827
[case testTupleAdd]
761828
from typing import Tuple
762829
def f(a: Tuple[int, ...], b: Tuple[int, ...]) -> None:

0 commit comments

Comments
 (0)