(&mut self)
| 1813 | } |
| 1814 | |
| 1815 | fn parse_dict_or_set(&mut self) -> Result<Expression, ParsingError> { |
| 1816 | let node = self.start_node(); |
| 1817 | self.bump(Kind::LeftBracket); |
| 1818 | if self.eat(Kind::RightBracket) { |
| 1819 | return Ok(Expression::Dict(Box::new(Dict { |
| 1820 | node: self.finish_node(node), |
| 1821 | keys: vec![], |
| 1822 | values: vec![], |
| 1823 | }))); |
| 1824 | } |
| 1825 | if self.at(Kind::Pow) { |
| 1826 | // key must be None |
| 1827 | let (key, value) = self.parse_double_starred_kv_pair()?; |
| 1828 | return self.parse_dict(node, key, value); |
| 1829 | } |
| 1830 | let first_key_or_element = self.parse_star_named_expression()?; |
| 1831 | if matches!( |
| 1832 | self.cur_kind(), |
| 1833 | Kind::Comma | Kind::RightBracket | Kind::Async | Kind::For | Kind::Walrus |
| 1834 | ) { |
| 1835 | self.parse_set(node, first_key_or_element) |
| 1836 | } else { |
| 1837 | self.expect(Kind::Colon)?; |
| 1838 | let first_value = self.parse_expression()?; |
| 1839 | self.parse_dict(node, Some(first_key_or_element), first_value) |
| 1840 | } |
| 1841 | } |
| 1842 | |
| 1843 | // https://docs.python.org/3/reference/expressions.html#set-displays |
| 1844 | fn parse_set(&mut self, node: Node, first_elm: Expression) -> Result<Expression, ParsingError> { |
no test coverage detected