From a88899ed750047a4871f92940be415e447aef7a3 Mon Sep 17 00:00:00 2001 From: +merlan #flirora Date: Thu, 8 Aug 2024 12:06:22 -0400 Subject: Bail out of reparse in `expr_with_paren` if we land on a different char (#4577) --- crates/typst-syntax/src/parser.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'crates/typst-syntax/src/parser.rs') diff --git a/crates/typst-syntax/src/parser.rs b/crates/typst-syntax/src/parser.rs index ff01bacf..2cbce1d7 100644 --- a/crates/typst-syntax/src/parser.rs +++ b/crates/typst-syntax/src/parser.rs @@ -1102,13 +1102,17 @@ fn expr_with_paren(p: &mut Parser, atomic: bool) { if p.at(SyntaxKind::Arrow) { p.restore(checkpoint); params(p); - p.assert(SyntaxKind::Arrow); + if !p.expect(SyntaxKind::Arrow) { + return; + } code_expr(p); p.wrap(m, SyntaxKind::Closure); } else if p.at(SyntaxKind::Eq) && kind != SyntaxKind::Parenthesized { p.restore(checkpoint); destructuring_or_parenthesized(p, true, &mut HashSet::new()); - p.assert(SyntaxKind::Eq); + if !p.expect(SyntaxKind::Eq) { + return; + } code_expr(p); p.wrap(m, SyntaxKind::DestructAssignment); } else { -- cgit v1.2.3