Parses a list expression. See:
(&mut self, first_element: Expr, start: TextSize)
| 2476 | /// |
| 2477 | /// See: <https://docs.python.org/3/reference/expressions.html#list-displays> |
| 2478 | fn parse_list_expression(&mut self, first_element: Expr, start: TextSize) -> ast::ExprList { |
| 2479 | if !self.at_sequence_end() { |
| 2480 | self.expect(TokenKind::Comma); |
| 2481 | } |
| 2482 | |
| 2483 | let elts_snapshot = self.expr_scratch.snapshot(); |
| 2484 | self.expr_scratch.push(first_element); |
| 2485 | |
| 2486 | self.parse_comma_separated_list(RecoveryContextKind::ListElements, |parser| { |
| 2487 | let element = parser |
| 2488 | .parse_named_expression_or_higher(ExpressionContext::starred_bitwise_or()) |
| 2489 | .expr; |
| 2490 | parser.expr_scratch.push(element); |
| 2491 | }); |
| 2492 | |
| 2493 | self.expect(TokenKind::Rsqb); |
| 2494 | |
| 2495 | ast::ExprList { |
| 2496 | elts: self.expr_scratch.take(elts_snapshot), |
| 2497 | ctx: ExprContext::Load, |
| 2498 | range: self.node_range(start), |
| 2499 | node_index: AtomicNodeIndex::NONE, |
| 2500 | } |
| 2501 | } |
| 2502 | |
| 2503 | /// Parses a set expression. |
| 2504 | /// |
no test coverage detected