summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/env.py8
-rw-r--r--tests/test_coverage.py6
2 files changed, 10 insertions, 4 deletions
diff --git a/coverage/env.py b/coverage/env.py
index 5d69a234..b2229281 100644
--- a/coverage/env.py
+++ b/coverage/env.py
@@ -106,11 +106,17 @@ class PYBEHAVIOR:
# Lines after break/continue/return/raise are no longer compiled into the
# bytecode. They used to be marked as missing, now they aren't executable.
- omit_after_jump = pep626
+ omit_after_jump = (
+ pep626
+ or (PYPY and PYVERSION >= (3, 9) and PYPYVERSION >= (7, 3, 12))
+ )
# PyPy has always omitted statements after return.
omit_after_return = omit_after_jump or PYPY
+ # Optimize away unreachable try-else clauses.
+ optimize_unreachable_try_else = pep626
+
# Modules used to have firstlineno equal to the line number of the first
# real line of code. Now they always start at 1.
module_firstline_1 = pep626
diff --git a/tests/test_coverage.py b/tests/test_coverage.py
index 1992ebb8..1cade9cb 100644
--- a/tests/test_coverage.py
+++ b/tests/test_coverage.py
@@ -1121,7 +1121,7 @@ class CompoundStatementTest(CoverageTest):
)
def test_try_except_stranded_else(self) -> None:
- if env.PYBEHAVIOR.omit_after_jump:
+ if env.PYBEHAVIOR.optimize_unreachable_try_else:
# The else can't be reached because the try ends with a raise.
lines = [1,2,3,4,5,6,9]
missing = ""
@@ -1498,7 +1498,7 @@ class ExcludeTest(CoverageTest):
)
def test_excluding_try_except_stranded_else(self) -> None:
- if env.PYBEHAVIOR.omit_after_jump:
+ if env.PYBEHAVIOR.optimize_unreachable_try_else:
# The else can't be reached because the try ends with a raise.
arcz = ".1 12 23 34 45 56 69 9."
arcz_missing = ""
@@ -1801,7 +1801,7 @@ class Py25Test(CoverageTest):
)
def test_try_except_finally_stranded_else(self) -> None:
- if env.PYBEHAVIOR.omit_after_jump:
+ if env.PYBEHAVIOR.optimize_unreachable_try_else:
# The else can't be reached because the try ends with a raise.
lines = [1,2,3,4,5,6,10,11]
missing = ""