mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-29 12:24:45 +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));
|
assert!(self.cur_is(VBar));
|
||||||
let l_vbar = self.lpop();
|
let l_vbar = self.lpop();
|
||||||
let args = self.try_reduce_args(true).map_err(|_| self.stack_dec())?;
|
let args = self.try_reduce_args(true).map_err(|_| self.stack_dec())?;
|
||||||
assert!(self.cur_is(VBar));
|
if self.cur_is(VBar) {
|
||||||
let r_vbar = self.lpop();
|
let r_vbar = self.lpop();
|
||||||
self.level -= 1;
|
self.level -= 1;
|
||||||
Ok(TypeAppArgs::new(l_vbar, args, r_vbar))
|
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> {
|
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(1) == 1
|
||||||
assert id(True) == True
|
assert id(True) == True
|
||||||
assert id("hello") == "hello"
|
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(1)(2) == 1
|
||||||
assert const(True)(2) == True
|
assert const(True)(2) == True
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue