mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-30 04:44:44 +00:00
Fix if codegen bugs
This commit is contained in:
parent
cafdd8ac35
commit
08a92bbbc1
11 changed files with 101 additions and 50 deletions
|
@ -706,11 +706,6 @@ impl Parser {
|
|||
debug_call_info!(self);
|
||||
match self.peek() {
|
||||
Some(t) if t.is(Symbol) => {
|
||||
if &t.inspect()[..] == "do" || &t.inspect()[..] == "do!" {
|
||||
let lambda = self.try_reduce_do_block().map_err(|_| self.stack_dec())?;
|
||||
self.level -= 1;
|
||||
return Ok(PosOrKwArg::Pos(PosArg::new(Expr::Lambda(lambda))));
|
||||
}
|
||||
if self.nth_is(1, Walrus) {
|
||||
let acc = self.try_reduce_acc_lhs().map_err(|_| self.stack_dec())?;
|
||||
debug_power_assert!(self.cur_is(Walrus));
|
||||
|
@ -1410,6 +1405,11 @@ impl Parser {
|
|||
fn try_reduce_bin_lhs(&mut self, in_type_args: bool, in_brace: bool) -> ParseResult<Expr> {
|
||||
debug_call_info!(self);
|
||||
match self.peek() {
|
||||
Some(t) if &t.inspect()[..] == "do" || &t.inspect()[..] == "do!" => {
|
||||
let lambda = self.try_reduce_do_block().map_err(|_| self.stack_dec())?;
|
||||
self.level -= 1;
|
||||
Ok(Expr::Lambda(lambda))
|
||||
}
|
||||
Some(t) if t.category_is(TC::Literal) => {
|
||||
// TODO: 10.times ...などメソッド呼び出しもある
|
||||
let lit = self.try_reduce_lit().map_err(|_| self.stack_dec())?;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue