MCPcopy Create free account
hub / github.com/Glyphack/enderpy / parse_dict_or_set

Method parse_dict_or_set

parser/src/parser/parser.rs:1815–1841  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

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> {

Callers 1

parse_atomMethod · 0.80

Calls 12

DictClass · 0.85
start_nodeMethod · 0.80
bumpMethod · 0.80
eatMethod · 0.80
finish_nodeMethod · 0.80
atMethod · 0.80
parse_dictMethod · 0.80
parse_setMethod · 0.80
expectMethod · 0.80
parse_expressionMethod · 0.80

Tested by

no test coverage detected