diff --git a/parser/src/lib.rs b/parser/src/lib.rs index b800706..4fd5b18 100644 --- a/parser/src/lib.rs +++ b/parser/src/lib.rs @@ -568,8 +568,10 @@ impl<'a> Parser<'a> { }; let index = if lex.consume(&Token::OpenBracket) { let mut pratt = Pratt::new(self, false); - let first = pratt.parse(lex)?; - Some(pratt.parse_comma_expr(lex, first)?) + let expr = pratt.parse(lex)?; + let expr = pratt.parse_comma_expr(lex, expr)?; + lex.expect(&Token::ClosedBracket, ParsingError::UnclosedArrayAccess)?; + Some(expr) } else { None }; diff --git a/parser/src/sexpr.rs b/parser/src/sexpr.rs index 501fc14..680bb08 100644 --- a/parser/src/sexpr.rs +++ b/parser/src/sexpr.rs @@ -191,7 +191,11 @@ impl Debug for SimpleStatement<'_> { } Self::Delete(array, Some(index)) => { - write!(f, "(delete (index {array:?} {index:?}))") + write!(f, "(delete (Index {array:?}")?; + for i in index { + write!(f, " {i}")?; + } + write!(f, "))") } Self::Delete(array, None) => write!(f, "(delete {array:?})"), }