(&mut self)
| 6881 | } |
| 6882 | |
| 6883 | fn parse_map(&mut self) -> Result<Expr<Raw>, ParserError> { |
| 6884 | if self.consume_token(&Token::LParen) { |
| 6885 | let subquery = self.parse_query()?; |
| 6886 | self.expect_token(&Token::RParen)?; |
| 6887 | return Ok(Expr::MapSubquery(Box::new(subquery))); |
| 6888 | } |
| 6889 | |
| 6890 | self.expect_token(&Token::LBracket)?; |
| 6891 | let mut exprs = vec![]; |
| 6892 | loop { |
| 6893 | if let Some(Token::RBracket) = self.peek_token() { |
| 6894 | break; |
| 6895 | } |
| 6896 | let key = self.parse_expr()?; |
| 6897 | self.expect_token(&Token::Arrow)?; |
| 6898 | let value = if let Some(Token::LBracket) = self.peek_token() { |
| 6899 | self.parse_map()? |
| 6900 | } else { |
| 6901 | self.parse_expr()? |
| 6902 | }; |
| 6903 | exprs.push(MapEntry { key, value }); |
| 6904 | if !self.consume_token(&Token::Comma) { |
| 6905 | break; |
| 6906 | } |
| 6907 | } |
| 6908 | self.expect_token(&Token::RBracket)?; |
| 6909 | Ok(Expr::Map(exprs)) |
| 6910 | } |
| 6911 | |
| 6912 | fn parse_sequence<F>(&mut self, mut f: F) -> Result<Vec<Expr<Raw>>, ParserError> |
| 6913 | where |
no test coverage detected