mirror of
https://github.com/erg-lang/erg.git
synced 2025-08-04 02:39:20 +00:00
Fix parse.rs
This commit is contained in:
parent
be983b0812
commit
7906eff50d
2 changed files with 12 additions and 6 deletions
|
@ -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> {
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue