fix: parsing of open

This commit is contained in:
felipegchi 2023-01-23 09:56:42 -03:00
parent 668233184f
commit d8eeb510e5
3 changed files with 20 additions and 2 deletions

View File

@ -618,14 +618,17 @@ impl<'a> Parser<'a> {
self.advance(); // 'open'
let type_name = self.parse_upper_id()?;
let var_name = self.parse_id()?;
let next = self.parse_expr(false)?;
let end = next.range;
let motive = self.try_single(&|this| {
this.eat_variant(Token::Colon)?;
this.parse_expr(false)
})?;
self.check_and_eat(Token::Semi);
let next = self.parse_expr(false)?;
let end = next.range;
Ok(Box::new(Expr {
data: ExprKind::Open { type_name, var_name, motive, next },
range: start.mix(end),

View File

@ -0,0 +1 @@
Ok!

View File

@ -0,0 +1,14 @@
#derive[match]
record Pudim {
owo : U60
uwu : U60
}
#keep
Ok (n: Pudim) : U60
Ok n =
open Pudim n : _;
(+ n.owo n.uwu)
Main : U60
Main = Ok (Pudim.new 10 20)