mirror of
https://github.com/erg-lang/erg.git
synced 2025-10-01 13:11:11 +00:00
Fix #299
This commit is contained in:
parent
f7e9481bad
commit
f677d23294
1 changed files with 22 additions and 0 deletions
|
@ -1328,6 +1328,28 @@ impl Parser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Some(t) if t.is(LSqBr) => {
|
||||||
|
let Some(ExprOrOp::Expr(obj)) = stack.pop() else {
|
||||||
|
self.level -= 1;
|
||||||
|
let err = self.skip_and_throw_syntax_err(caused_by!());
|
||||||
|
self.errs.push(err);
|
||||||
|
return Err(());
|
||||||
|
};
|
||||||
|
self.skip();
|
||||||
|
let index = self
|
||||||
|
.try_reduce_expr(false, false, in_brace, false)
|
||||||
|
.map_err(|_| self.stack_dec())?;
|
||||||
|
let r_sqbr = self.lpop();
|
||||||
|
if !r_sqbr.is(RSqBr) {
|
||||||
|
self.restore(r_sqbr);
|
||||||
|
self.level -= 1;
|
||||||
|
let err = self.skip_and_throw_syntax_err(caused_by!());
|
||||||
|
self.errs.push(err);
|
||||||
|
return Err(());
|
||||||
|
}
|
||||||
|
let acc = Accessor::subscr(obj, index, r_sqbr);
|
||||||
|
stack.push(ExprOrOp::Expr(Expr::Accessor(acc)));
|
||||||
|
}
|
||||||
Some(t) if t.is(Comma) && winding => {
|
Some(t) if t.is(Comma) && winding => {
|
||||||
let first_elem = PosOrKwArg::Pos(PosArg::new(
|
let first_elem = PosOrKwArg::Pos(PosArg::new(
|
||||||
enum_unwrap!(stack.pop(), Some:(ExprOrOp::Expr:(_))),
|
enum_unwrap!(stack.pop(), Some:(ExprOrOp::Expr:(_))),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue