diff options
| author | +merlan #flirora <uruwi@protonmail.com> | 2024-08-08 12:06:22 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-08 16:06:22 +0000 |
| commit | a88899ed750047a4871f92940be415e447aef7a3 (patch) | |
| tree | 1eba61e22040beedd186c6a79ac0db1b7ebc1839 /crates/typst-syntax/src | |
| parent | 7496dd7463969479d476148d5d136e3b3be3ba68 (diff) | |
Bail out of reparse in `expr_with_paren` if we land on a different char (#4577)
Diffstat (limited to 'crates/typst-syntax/src')
| -rw-r--r-- | crates/typst-syntax/src/parser.rs | 8 |
1 files changed, 6 insertions, 2 deletions
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 { |
