diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2016-01-05 06:54:07 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2016-01-05 06:54:07 -0500 |
commit | f7f56ec9adaa531019a27ef7c634db816f30040a (patch) | |
tree | 43d50cdfde9083d9de8e81211bd466a40fa323ff /coverage/parser.py | |
parent | 4074315ac65ed79e94bc331a8059859781b5b12b (diff) | |
download | python-coveragepy-git-f7f56ec9adaa531019a27ef7c634db816f30040a.tar.gz |
Support while-else
--HG--
branch : ast-branch
Diffstat (limited to 'coverage/parser.py')
-rw-r--r-- | coverage/parser.py | 12 |
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): |