(&mut self)
| 557 | } |
| 558 | |
| 559 | fn parse_except_clauses(&mut self) -> Result<Vec<ExceptHandler>, ParsingError> { |
| 560 | let mut handlers = vec![]; |
| 561 | while self.at(Kind::Except) { |
| 562 | let node = self.start_node(); |
| 563 | self.bump(Kind::Except); |
| 564 | self.bump(Kind::Mul); |
| 565 | let typ = if !self.at(Kind::Colon) { |
| 566 | Some(self.parse_expression()?) |
| 567 | } else { |
| 568 | None |
| 569 | }; |
| 570 | let name = if self.eat(Kind::As) { |
| 571 | let val = Some(self.cur_token().to_string(self.source)); |
| 572 | self.bump(Kind::Identifier); |
| 573 | val |
| 574 | } else { |
| 575 | None |
| 576 | }; |
| 577 | |
| 578 | self.expect(Kind::Colon)?; |
| 579 | let body = self.parse_suite()?; |
| 580 | |
| 581 | handlers.push(ExceptHandler { |
| 582 | node: self.finish_node_chomped(node), |
| 583 | typ, |
| 584 | name, |
| 585 | body, |
| 586 | }); |
| 587 | } |
| 588 | |
| 589 | Ok(handlers) |
| 590 | } |
| 591 | |
| 592 | fn parse_function_definition( |
| 593 | &mut self, |
no test coverage detected