(&mut self)
| 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 | }) |
no test coverage detected