@@ -748,13 +748,16 @@ def varint() -> int:
748
748
# this helper lets us break constant folding for this test
749
749
return 2
750
750
751
- source: Final = (1, varint(), 3)
751
+ source_final: Final = (1, varint(), 3)
752
+ source_var = (1, varint(), 3)
752
753
753
754
def f(val: int) -> bool:
754
755
return val % 2 == 0
755
756
756
- def test() -> None:
757
- a = tuple(f(x) for x in source)
757
+ def test_final_can_fold() -> None:
758
+ a = tuple(f(x) for x in source_final)
759
+ def test_var_can_not_fold() -> None:
760
+ a = tuple(f(x) for x in source_var)
758
761
[out]
759
762
def varint():
760
763
L0:
766
769
r0 = CPyTagged_Remainder(val, 4)
767
770
r1 = int_eq r0, 0
768
771
return r1
769
- def test ():
772
+ def test_final_can_fold ():
770
773
r0 :: tuple[int, int, int]
771
774
r1 :: bool
772
775
r2 :: object
@@ -785,10 +788,10 @@ def test():
785
788
r17 :: native_int
786
789
a :: tuple
787
790
L0:
788
- r0 = __main__.source :: static
791
+ r0 = __main__.source_final :: static
789
792
if is_error(r0) goto L1 else goto L2
790
793
L1:
791
- r1 = raise NameError('value for final name "source " was not set')
794
+ r1 = raise NameError('value for final name "source_final " was not set')
792
795
unreachable
793
796
L2:
794
797
r2 = box(tuple[int, int, int], r0)
818
821
L6:
819
822
a = r10
820
823
return 1
824
+ def test_var_can_not_fold():
825
+ source :: tuple
826
+ r0 :: native_int
827
+ r1 :: tuple
828
+ r2 :: native_int
829
+ r3 :: bit
830
+ r4 :: object
831
+ r5, x, r6 :: bool
832
+ r7 :: object
833
+ r8 :: native_int
834
+ a :: tuple
835
+ L0:
836
+ r0 = var_object_size source
837
+ r1 = PyTuple_New(r0)
838
+ r2 = 0
839
+ L1:
840
+ r3 = r2 < r0 :: signed
841
+ if r3 goto L2 else goto L4 :: bool
842
+ L2:
843
+ r4 = CPySequenceTuple_GetItemUnsafe(source, r2)
844
+ r5 = unbox(bool, r4)
845
+ x = r5
846
+ r6 = f(x)
847
+ r7 = box(bool, r6)
848
+ CPySequenceTuple_SetItemUnsafe(r1, r2, r7)
849
+ L3:
850
+ r8 = r2 + 1
851
+ r2 = r8
852
+ goto L1
853
+ L4:
854
+ a = r1
855
+ return 1
821
856
822
857
[case testTupleBuiltFromVariableLengthTuple]
823
858
from typing import Tuple
0 commit comments