@@ -1650,33 +1650,37 @@ def test_optimize_unary_not(self):
1650
1650
# test folding
1651
1651
before = [
1652
1652
('LOAD_SMALL_INT' , 1 , 0 ),
1653
+ ('TO_BOOL' , None , 0 ),
1653
1654
('UNARY_NOT' , None , 0 ),
1654
1655
('RETURN_VALUE' , None , 0 ),
1655
1656
]
1656
1657
after = [
1657
- ('LOAD_CONST' , 0 , 0 ),
1658
+ ('LOAD_CONST' , 1 , 0 ),
1658
1659
('RETURN_VALUE' , None , 0 ),
1659
1660
]
1660
- self .cfg_optimization_test (before , after , consts = [], expected_consts = [False ])
1661
+ self .cfg_optimization_test (before , after , consts = [], expected_consts = [True , False ])
1661
1662
1662
1663
# test cancel out
1663
1664
before = [
1664
- ('LOAD_SMALL_INT' , 1 , 0 ),
1665
+ ('LOAD_NAME' , 0 , 0 ),
1666
+ ('TO_BOOL' , None , 0 ),
1665
1667
('UNARY_NOT' , None , 0 ),
1666
1668
('UNARY_NOT' , None , 0 ),
1667
1669
('UNARY_NOT' , None , 0 ),
1668
1670
('UNARY_NOT' , None , 0 ),
1669
1671
('RETURN_VALUE' , None , 0 ),
1670
1672
]
1671
1673
after = [
1672
- ('LOAD_SMALL_INT' , 1 , 0 ),
1674
+ ('LOAD_NAME' , 0 , 0 ),
1675
+ ('TO_BOOL' , None , 0 ),
1673
1676
('RETURN_VALUE' , None , 0 ),
1674
1677
]
1675
1678
self .cfg_optimization_test (before , after , consts = [], expected_consts = [])
1676
1679
1677
1680
# test eliminate to bool
1678
1681
before = [
1679
1682
('LOAD_NAME' , 0 , 0 ),
1683
+ ('TO_BOOL' , None , 0 ),
1680
1684
('UNARY_NOT' , None , 0 ),
1681
1685
('TO_BOOL' , None , 0 ),
1682
1686
('TO_BOOL' , None , 0 ),
@@ -1685,29 +1689,48 @@ def test_optimize_unary_not(self):
1685
1689
]
1686
1690
after = [
1687
1691
('LOAD_NAME' , 0 , 0 ),
1692
+ ('TO_BOOL' , None , 0 ),
1688
1693
('UNARY_NOT' , None , 0 ),
1689
1694
('RETURN_VALUE' , None , 0 ),
1690
1695
]
1691
1696
self .cfg_optimization_test (before , after , consts = [], expected_consts = [])
1692
1697
1698
+ # test folding & cancel out
1699
+ before = [
1700
+ ('LOAD_SMALL_INT' , 1 , 0 ),
1701
+ ('TO_BOOL' , None , 0 ),
1702
+ ('UNARY_NOT' , None , 0 ),
1703
+ ('UNARY_NOT' , None , 0 ),
1704
+ ('UNARY_NOT' , None , 0 ),
1705
+ ('UNARY_NOT' , None , 0 ),
1706
+ ('RETURN_VALUE' , None , 0 ),
1707
+ ]
1708
+ after = [
1709
+ ('LOAD_CONST' , 0 , 0 ),
1710
+ ('RETURN_VALUE' , None , 0 ),
1711
+ ]
1712
+ self .cfg_optimization_test (before , after , consts = [], expected_consts = [True ])
1713
+
1693
1714
# test folding & eliminate to bool
1694
1715
before = [
1695
1716
('LOAD_SMALL_INT' , 1 , 0 ),
1717
+ ('TO_BOOL' , None , 0 ),
1696
1718
('UNARY_NOT' , None , 0 ),
1697
1719
('TO_BOOL' , None , 0 ),
1698
1720
('TO_BOOL' , None , 0 ),
1699
1721
('TO_BOOL' , None , 0 ),
1700
1722
('RETURN_VALUE' , None, 0 ),
1701
1723
]
1702
1724
after = [
1703
- ('LOAD_CONST' , 0 , 0 ),
1725
+ ('LOAD_CONST' , 1 , 0 ),
1704
1726
('RETURN_VALUE' , None , 0 ),
1705
1727
]
1706
- self .cfg_optimization_test (before , after , consts = [], expected_consts = [False ])
1728
+ self .cfg_optimization_test (before , after , consts = [], expected_consts = [True , False ])
1707
1729
1708
- # test cancel out & eliminate to bool (to bool stays)
1730
+ # test cancel out & eliminate to bool (to bool stays as we are not iterating to a fixed point )
1709
1731
before = [
1710
- ('LOAD_SMALL_INT' , 1 , 0 ),
1732
+ ('LOAD_NAME' , 0 , 0 ),
1733
+ ('TO_BOOL' , None , 0 ),
1711
1734
('UNARY_NOT' , None , 0 ),
1712
1735
('UNARY_NOT' , None , 0 ),
1713
1736
('UNARY_NOT' , None , 0 ),
@@ -1716,7 +1739,8 @@ def test_optimize_unary_not(self):
1716
1739
('RETURN_VALUE' , None , 0 ),
1717
1740
]
1718
1741
after = [
1719
- ('LOAD_SMALL_INT' , 1 , 0 ),
1742
+ ('LOAD_NAME' , 0 , 0 ),
1743
+ ('TO_BOOL' , None , 0 ),
1720
1744
('TO_BOOL' , None , 0 ),
1721
1745
('RETURN_VALUE' , None , 0 ),
1722
1746
]
0 commit comments