summaryrefslogtreecommitdiff
path: root/coverage/parser.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2016-01-05 06:54:07 -0500
committerNed Batchelder <ned@nedbatchelder.com>2016-01-05 06:54:07 -0500
commitf7f56ec9adaa531019a27ef7c634db816f30040a (patch)
tree43d50cdfde9083d9de8e81211bd466a40fa323ff /coverage/parser.py
parent4074315ac65ed79e94bc331a8059859781b5b12b (diff)
downloadpython-coveragepy-git-f7f56ec9adaa531019a27ef7c634db816f30040a.tar.gz
Support while-else
--HG-- branch : ast-branch
Diffstat (limited to 'coverage/parser.py')
-rw-r--r--coverage/parser.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/coverage/parser.py b/coverage/parser.py
index c680f63b..b0e7371f 100644
--- a/coverage/parser.py
+++ b/coverage/parser.py
@@ -520,8 +520,6 @@ class AstArcAnalyzer(object):
my_block = self.block_stack.pop()
exits = my_block.break_exits
if node.orelse:
- else_start = self.line_for_node(node.orelse[0])
- self.arcs.add((start, else_start))
else_exits = self.add_body_arcs(node.orelse, from_line=start)
exits |= else_exits
else:
@@ -653,11 +651,15 @@ class AstArcAnalyzer(object):
for xit in exits:
self.arcs.add((xit, to_top))
exits = set()
- if not constant_test:
- exits.add(start)
my_block = self.block_stack.pop()
exits.update(my_block.break_exits)
- # TODO: orelse
+ if node.orelse:
+ else_exits = self.add_body_arcs(node.orelse, from_line=start)
+ exits |= else_exits
+ else:
+ # No `else` clause: you can exit from the start.
+ if not constant_test:
+ exits.add(start)
return exits
def handle_With(self, node):