summaryrefslogtreecommitdiff
path: root/crates/typst-syntax/src
diff options
context:
space:
mode:
author+merlan #flirora <uruwi@protonmail.com>2024-08-08 12:06:22 -0400
committerGitHub <noreply@github.com>2024-08-08 16:06:22 +0000
commita88899ed750047a4871f92940be415e447aef7a3 (patch)
tree1eba61e22040beedd186c6a79ac0db1b7ebc1839 /crates/typst-syntax/src
parent7496dd7463969479d476148d5d136e3b3be3ba68 (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.rs8
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 {