Parse arrow type: A -> B
(&mut self)
| 320 | |
| 321 | /// Parse arrow type: A -> B |
| 322 | fn parse_arrow_expr(&mut self) -> crate::Result<Expr> { |
| 323 | let mut expr = self.parse_forall_expr()?; |
| 324 | |
| 325 | while self.check(&TokenKind::Arrow) { |
| 326 | let arrow_span = self.advance().span; |
| 327 | let to = self.parse_forall_expr()?; |
| 328 | let span = expr.span().to(to.span()); |
| 329 | |
| 330 | expr = Expr::Arrow { |
| 331 | span, |
| 332 | from: Box::new(expr), |
| 333 | to: Box::new(to), |
| 334 | }; |
| 335 | } |
| 336 | |
| 337 | Ok(expr) |
| 338 | } |
| 339 | |
| 340 | /// Parse forall: forall x : T, U |
| 341 | fn parse_forall_expr(&mut self) -> crate::Result<Expr> { |
no test coverage detected