https://docs.python.org/3/reference/expressions.html#assignment-expressions
(&mut self)
| 1547 | |
| 1548 | // https://docs.python.org/3/reference/expressions.html#assignment-expressions |
| 1549 | fn parse_named_expression(&mut self) -> Result<Expression, ParsingError> { |
| 1550 | let node = self.start_node(); |
| 1551 | // TODO: Maybe this walrus check is redundant |
| 1552 | if self.at(Kind::Identifier) && matches!(self.peek_kind()?, Kind::Walrus) { |
| 1553 | let identifier = self.cur_token().to_string(self.source); |
| 1554 | let mut identifier_node = self.start_node(); |
| 1555 | self.bump_any(); |
| 1556 | identifier_node = self.finish_node(identifier_node); |
| 1557 | if self.eat(Kind::Walrus) { |
| 1558 | let value = self.parse_expression()?; |
| 1559 | return Ok(Expression::NamedExpr(Box::new(NamedExpression { |
| 1560 | node: self.finish_node(node), |
| 1561 | target: Expression::Name(Box::new(Name { |
| 1562 | node: identifier_node, |
| 1563 | id: identifier, |
| 1564 | parenthesized: false, |
| 1565 | })), |
| 1566 | value, |
| 1567 | }))); |
| 1568 | } |
| 1569 | return Ok(Expression::Name(Box::new(Name { |
| 1570 | node: identifier_node, |
| 1571 | id: identifier, |
| 1572 | parenthesized: false, |
| 1573 | }))); |
| 1574 | } |
| 1575 | self.parse_expression() |
| 1576 | } |
| 1577 | |
| 1578 | // https://docs.python.org/3/reference/expressions.html#list-displays |
| 1579 | fn parse_list(&mut self) -> Result<Expression, ParsingError> { |
no test coverage detected