Parse forall: forall x : T, U
(&mut self)
| 339 | |
| 340 | /// Parse forall: forall x : T, U |
| 341 | fn parse_forall_expr(&mut self) -> crate::Result<Expr> { |
| 342 | if self.check(&TokenKind::Forall) { |
| 343 | let start = self.advance().span; |
| 344 | let params = self.parse_params()?; |
| 345 | self.expect(TokenKind::Comma)?; |
| 346 | let body = Box::new(self.parse_expr()?); |
| 347 | let span = start.to(body.span()); |
| 348 | |
| 349 | Ok(Expr::Forall { span, params, body }) |
| 350 | } else { |
| 351 | self.parse_lambda_expr() |
| 352 | } |
| 353 | } |
| 354 | |
| 355 | /// Parse lambda: fun x => body |
| 356 | fn parse_lambda_expr(&mut self) -> crate::Result<Expr> { |
no test coverage detected