(&mut self)
| 524 | } |
| 525 | |
| 526 | fn parse_call_arguments(&mut self) -> Option<Vec<Expr>> { |
| 527 | let mut args: Vec<Expr> = vec![]; |
| 528 | |
| 529 | if self.peek_token(&Token::RightParen) { |
| 530 | self.next_token(); |
| 531 | return Some(args); |
| 532 | } |
| 533 | |
| 534 | self.next_token(); |
| 535 | match self.parse_expr(Precedence::Lowest) { |
| 536 | Some(e) => args.push(e), |
| 537 | None => return None, |
| 538 | }; |
| 539 | |
| 540 | while self.peek_token(&Token::Comma) { |
| 541 | self.next_token(); |
| 542 | self.next_token(); |
| 543 | |
| 544 | match self.parse_expr(Precedence::Lowest) { |
| 545 | Some(e) => args.push(e), |
| 546 | None => return None, |
| 547 | }; |
| 548 | } |
| 549 | |
| 550 | if !self.expect_peek(Token::RightParen) { |
| 551 | return None; |
| 552 | } |
| 553 | |
| 554 | Some(args) |
| 555 | } |
| 556 | |
| 557 | fn parse_index_expr(&mut self, left: Expr) -> Option<Expr> { |
| 558 | self.next_token(); |
no test coverage detected