File tree Expand file tree Collapse file tree 2 files changed +203
-0
lines changed Expand file tree Collapse file tree 2 files changed +203
-0
lines changed Original file line number Diff line number Diff line change 620620 a = r3
621621 return 1
622622
623+ [case testListBuiltFromStrExpr]
624+ def f2(val: str) -> str:
625+ return val + "f2"
626+
627+ def test() -> None:
628+ a = [f2(x) for x in "abc"]
629+ [out]
630+ def f2(val):
631+ val, r0, r1 :: str
632+ L0:
633+ r0 = 'f2'
634+ r1 = PyUnicode_Concat(val, r0)
635+ return r1
636+ def test():
637+ r0 :: str
638+ r1 :: list
639+ r2 :: native_int
640+ r3 :: bit
641+ r4, x, r5 :: str
642+ r6 :: native_int
643+ a :: list
644+ L0:
645+ r0 = 'abc'
646+ r1 = PyList_New(3)
647+ r2 = 0
648+ L1:
649+ r3 = r2 < 3 :: signed
650+ if r3 goto L2 else goto L4 :: bool
651+ L2:
652+ r4 = CPyStr_GetItemUnsafe(r0, r2)
653+ x = r4
654+ r5 = f2(x)
655+ CPyList_SetItemUnsafe(r1, r2, r5)
656+ L3:
657+ r6 = r2 + 1
658+ r2 = r6
659+ goto L1
660+ L4:
661+ a = r1
662+ return 1
663+
623664[case testListBuiltFromFinalStr]
624665from typing import Final
625666
729770 a = r2
730771 return 1
731772
773+ [case testListBuiltFromBytesExpr_64bit]
774+ def f2(val: int) -> int:
775+ return val + 2
776+
777+ def test() -> None:
778+ a = [f2(x) for x in b"abc"]
779+
780+ [out]
781+ def f2(val):
782+ val, r0 :: int
783+ L0:
784+ r0 = CPyTagged_Add(val, 4)
785+ return r0
786+ def test():
787+ r0 :: bytes
788+ r1 :: list
789+ r2 :: native_int
790+ r3, r4, r5 :: bit
791+ r6, r7, r8, r9 :: int
792+ r10 :: object
793+ r11, x, r12 :: int
794+ r13 :: object
795+ r14 :: native_int
796+ a :: list
797+ L0:
798+ r0 = b'abc'
799+ r1 = PyList_New(3)
800+ r2 = 0
801+ L1:
802+ r3 = r2 < 3 :: signed
803+ if r3 goto L2 else goto L8 :: bool
804+ L2:
805+ r4 = r2 <= 4611686018427387903 :: signed
806+ if r4 goto L3 else goto L4 :: bool
807+ L3:
808+ r5 = r2 >= -4611686018427387904 :: signed
809+ if r5 goto L5 else goto L4 :: bool
810+ L4:
811+ r6 = CPyTagged_FromInt64(r2)
812+ r7 = r6
813+ goto L6
814+ L5:
815+ r8 = r2 << 1
816+ r7 = r8
817+ L6:
818+ r9 = CPyBytes_GetItem(r0, r7)
819+ r10 = box(int, r9)
820+ r11 = unbox(int, r10)
821+ x = r11
822+ r12 = f2(x)
823+ r13 = box(int, r12)
824+ CPyList_SetItemUnsafe(r1, r2, r13)
825+ L7:
826+ r14 = r2 + 1
827+ r2 = r14
828+ goto L1
829+ L8:
830+ a = r1
831+ return 1
832+
732833[case testListBuiltFromFinalBytes_64bit]
733834from typing import Final
734835
Original file line number Diff line number Diff line change 319319 a = r3
320320 return 1
321321
322+ [case testTupleBuiltFromStrExpr]
323+ def f2(val: str) -> str:
324+ return val + "f2"
325+
326+ def test() -> None:
327+ a = tuple(f2(x) for x in "abc")
328+
329+ [out]
330+ def f2(val):
331+ val, r0, r1 :: str
332+ L0:
333+ r0 = 'f2'
334+ r1 = PyUnicode_Concat(val, r0)
335+ return r1
336+ def test():
337+ r0 :: str
338+ r1 :: tuple
339+ r2 :: native_int
340+ r3 :: bit
341+ r4, x, r5 :: str
342+ r6 :: native_int
343+ a :: tuple
344+ L0:
345+ r0 = 'abc'
346+ r1 = PyTuple_New(3)
347+ r2 = 0
348+ L1:
349+ r3 = r2 < 3 :: signed
350+ if r3 goto L2 else goto L4 :: bool
351+ L2:
352+ r4 = CPyStr_GetItemUnsafe(r0, r2)
353+ x = r4
354+ r5 = f2(x)
355+ CPySequenceTuple_SetItemUnsafe(r1, r2, r5)
356+ L3:
357+ r6 = r2 + 1
358+ r2 = r6
359+ goto L1
360+ L4:
361+ a = r1
362+ return 1
363+
322364[case testTupleBuiltFromFinalStr]
323365from typing import Final
324366
428470 a = r2
429471 return 1
430472
473+ [case testTupleBuiltFromBytesExpr_64bit]
474+ def f2(val: int) -> int:
475+ return val + 2
476+
477+ def test() -> None:
478+ a = tuple(f2(x) for x in b"abc")
479+
480+ [out]
481+ def f2(val):
482+ val, r0 :: int
483+ L0:
484+ r0 = CPyTagged_Add(val, 4)
485+ return r0
486+ def test():
487+ r0 :: bytes
488+ r1 :: tuple
489+ r2 :: native_int
490+ r3, r4, r5 :: bit
491+ r6, r7, r8, r9 :: int
492+ r10 :: object
493+ r11, x, r12 :: int
494+ r13 :: object
495+ r14 :: native_int
496+ a :: tuple
497+ L0:
498+ r0 = b'abc'
499+ r1 = PyTuple_New(3)
500+ r2 = 0
501+ L1:
502+ r3 = r2 < 3 :: signed
503+ if r3 goto L2 else goto L8 :: bool
504+ L2:
505+ r4 = r2 <= 4611686018427387903 :: signed
506+ if r4 goto L3 else goto L4 :: bool
507+ L3:
508+ r5 = r2 >= -4611686018427387904 :: signed
509+ if r5 goto L5 else goto L4 :: bool
510+ L4:
511+ r6 = CPyTagged_FromInt64(r2)
512+ r7 = r6
513+ goto L6
514+ L5:
515+ r8 = r2 << 1
516+ r7 = r8
517+ L6:
518+ r9 = CPyBytes_GetItem(r0, r7)
519+ r10 = box(int, r9)
520+ r11 = unbox(int, r10)
521+ x = r11
522+ r12 = f2(x)
523+ r13 = box(int, r12)
524+ CPySequenceTuple_SetItemUnsafe(r1, r2, r13)
525+ L7:
526+ r14 = r2 + 1
527+ r2 = r14
528+ goto L1
529+ L8:
530+ a = r1
531+ return 1
532+
431533[case testTupleBuiltFromFinalBytes_64bit]
432534from typing import Final
433535
You can’t perform that action at this time.
0 commit comments