Fix parse.rs

This commit is contained in:
Shunsuke Shibayama 2022-10-01 14:39:30 +09:00
parent be983b0812
commit 7906eff50d
2 changed files with 12 additions and 6 deletions

View file

@ -377,10 +377,16 @@ impl Parser {
assert!(self.cur_is(VBar));
let l_vbar = self.lpop();
let args = self.try_reduce_args(true).map_err(|_| self.stack_dec())?;
assert!(self.cur_is(VBar));
let r_vbar = self.lpop();
self.level -= 1;
Ok(TypeAppArgs::new(l_vbar, args, r_vbar))
if self.cur_is(VBar) {
let r_vbar = self.lpop();
self.level -= 1;
Ok(TypeAppArgs::new(l_vbar, args, r_vbar))
} else {
self.level -= 1;
let err = self.skip_and_throw_syntax_err(caused_by!());
self.errs.push(err);
Err(())
}
}
fn try_reduce_acc(&mut self, in_type_args: bool) -> ParseResult<Accessor> {

View file

@ -1,9 +1,9 @@
id|T|(x: T): T = x
id|T: Type|(x: T): T = x
assert id(1) == 1
assert id(True) == True
assert id("hello") == "hello"
const|T, C|(c: C): C = _: T -> c
const|T: Type, C: Type|(c: C): C = (_: T,) -> c
assert const(1)(2) == 1
assert const(True)(2) == True