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 | 452f6f60c89119f1de1254ab9c5f4e25ac2f073d (patch) | |
tree | 40009e5bfdd1f3f5d8384762985c38c95686bca9 /coverage/parser.py | |
parent | 688488a7574cf872574c24d699acf2f869b1c786 (diff) | |
download | python-coveragepy-452f6f60c89119f1de1254ab9c5f4e25ac2f073d.tar.gz |
Support while-else
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 c680f63..b0e7371 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): |