Processes try statement decomposing it into the following: if ...: body else_body elif ...: except 1 elif ...: except 2 else: except n finally
(self, o: TryStmt)
| 562 | self.try_depth -= 1 |
| 563 | |
| 564 | def process_try_stmt(self, o: TryStmt) -> None: |
| 565 | """ |
| 566 | Processes try statement decomposing it into the following: |
| 567 | if ...: |
| 568 | body |
| 569 | else_body |
| 570 | elif ...: |
| 571 | except 1 |
| 572 | elif ...: |
| 573 | except 2 |
| 574 | else: |
| 575 | except n |
| 576 | finally |
| 577 | """ |
| 578 | self.tracker.start_branch_statement() |
| 579 | o.body.accept(self) |
| 580 | if o.else_body is not None: |
| 581 | o.else_body.accept(self) |
| 582 | if len(o.handlers) > 0: |
| 583 | assert len(o.handlers) == len(o.vars) == len(o.types) |
| 584 | for i in range(len(o.handlers)): |
| 585 | self.tracker.next_branch() |
| 586 | exc_type = o.types[i] |
| 587 | if exc_type is not None: |
| 588 | exc_type.accept(self) |
| 589 | var = o.vars[i] |
| 590 | if var is not None: |
| 591 | self.process_definition(var.name) |
| 592 | var.accept(self) |
| 593 | o.handlers[i].accept(self) |
| 594 | if var is not None: |
| 595 | self.tracker.delete_var(var.name) |
| 596 | self.tracker.end_branch_statement() |
| 597 | |
| 598 | if o.finally_body is not None: |
| 599 | self.tracker.in_finally = True |
| 600 | o.finally_body.accept(self) |
| 601 | self.tracker.in_finally = False |
| 602 | |
| 603 | def visit_while_stmt(self, o: WhileStmt) -> None: |
| 604 | o.expr.accept(self) |
no test coverage detected