summaryrefslogtreecommitdiff
path: root/coverage/parser.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2021-01-02 10:38:56 -0500
committerNed Batchelder <ned@nedbatchelder.com>2021-01-10 09:46:18 -0500
commite3f8053d805f8930ffc8424ac098576457c5f506 (patch)
treee34badb9cdbe80b7f9360efd8fe75f266ea04708 /coverage/parser.py
parent3adae9b5cdf67f7364607e3ca7307fa6ebbe1b08 (diff)
downloadpython-coveragepy-git-e3f8053d805f8930ffc8424ac098576457c5f506.tar.gz
PEP 626: constant tests are kept as no-ops
The conditionals are now getting unwieldy, perhaps we can simplify them in the future?
Diffstat (limited to 'coverage/parser.py')
-rw-r--r--coverage/parser.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/coverage/parser.py b/coverage/parser.py
index 6a3ca2fc..1e307c41 100644
--- a/coverage/parser.py
+++ b/coverage/parser.py
@@ -1118,9 +1118,14 @@ class AstArcAnalyzer(object):
@contract(returns='ArcStarts')
def _handle__While(self, node):
- constant_test = self.is_constant_expr(node.test)
start = to_top = self.line_for_node(node.test)
+ constant_test = self.is_constant_expr(node.test)
+ top_is_body0 = False
if constant_test and (env.PY3 or constant_test == "Num"):
+ top_is_body0 = True
+ if env.PYBEHAVIOR.keep_constant_test:
+ top_is_body0 = False
+ if top_is_body0:
to_top = self.line_for_node(node.body[0])
self.block_stack.append(LoopBlock(start=to_top))
from_start = ArcStart(start, cause="the condition on line {lineno} was never true")