MCPcopy Create free account
hub / github.com/LPC4/Full-Stack / parse_match_expression

Method parse_match_expression

crates/hll-to-ir/src/parser.rs:1961–2002  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

1959 for index in self.pos..self.tokens.len() {
1960 match self.tokens[index] {
1961 Token::LBrace => depth += 1,
1962 Token::RBrace => {
1963 depth = depth.saturating_sub(1);
1964 if depth == 0 {
1965 return self.tokens.get(index + 1) == Some(&Token::ColonEqual);
1966 }
1967 }
1968 _ => {}
1969 }
1970 }
1971 false
1972 }
1973
1974 fn parse_struct_destructure_field(&mut self) -> Result<StructDestructureField, ParserError> {
1975 let name = self.expect_ident()?;
1976 self.expect_colon()?;
1977 let ty = self.parse_type()?;
1978
1979 Ok(StructDestructureField {
1980 name: Some(name),
1981 ty: Some(ty),
1982 })
1983 }
1984
1985 fn expression_to_target(&self, expr: Expression) -> Result<AssignTarget, ParserError> {
1986 match expr {
1987 Expression::Primary(PrimaryExpr::Identifier(name)) => {
1988 Ok(AssignTarget::Identifier(name))
1989 }
1990 Expression::Primary(PrimaryExpr::Grouped(expr)) => self.expression_to_target(*expr),
1991 Expression::Unary {
1992 op: UnaryOp::Dereference,
1993 expr,
1994 } => Ok(AssignTarget::Dereference(expr)),
1995 Expression::Primary(PrimaryExpr::FieldAccess { expr, field }) => {
1996 Ok(AssignTarget::FieldAccess {
1997 expr: Box::new(self.expression_to_target(*expr)?),
1998 field,
1999 })
2000 }
2001 Expression::Primary(PrimaryExpr::ArrayIndex { expr, index }) => {
2002 Ok(AssignTarget::ArrayIndex {
2003 expr: Box::new(self.expression_to_target(*expr)?),
2004 index,
2005 })

Callers 1

parse_primaryMethod · 0.80

Calls 13

parse_expressionMethod · 0.80
expect_lbraceMethod · 0.80
consume_terminatorsMethod · 0.80
check_rbraceMethod · 0.80
parse_patternMethod · 0.80
match_arrowMethod · 0.80
check_lbraceMethod · 0.80
parse_blockMethod · 0.80
pushMethod · 0.80
match_commaMethod · 0.80
expect_rbraceMethod · 0.80
advanceMethod · 0.45

Tested by

no test coverage detected