summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_compile.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index ae23aea..219314b 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -502,6 +502,33 @@ class TestSpecifics(unittest.TestCase):
with self.assertRaisesRegex(TypeError, "NamedExpr target must be a Name"):
compile(ast.fix_missing_locations(m), "<file>", "exec")
+ def test_compile_redundant_jumps_and_nops_after_moving_cold_blocks(self):
+ # See gh-120367
+ code=textwrap.dedent("""
+ try:
+ pass
+ except:
+ pass
+ else:
+ match name_2:
+ case b'':
+ pass
+ finally:
+ something
+ """)
+
+ tree = ast.parse(code)
+
+ # make all instructions locations the same to create redundancies
+ for node in ast.walk(tree):
+ if hasattr(node,"lineno"):
+ del node.lineno
+ del node.end_lineno
+ del node.col_offset
+ del node.end_col_offset
+
+ compile(ast.fix_missing_locations(tree), "<file>", "exec")
+
def test_compile_ast(self):
fname = __file__
if fname.lower().endswith('pyc'):