diff options
Diffstat (limited to 'crates/typst-syntax/src/parser.rs')
| -rw-r--r-- | crates/typst-syntax/src/parser.rs | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/crates/typst-syntax/src/parser.rs b/crates/typst-syntax/src/parser.rs index 9e718b30..b77c5068 100644 --- a/crates/typst-syntax/src/parser.rs +++ b/crates/typst-syntax/src/parser.rs @@ -984,8 +984,7 @@ fn args(p: &mut Parser) { enum PatternKind { Ident, - Placeholder, - Destructuring, + Other, } fn pattern(p: &mut Parser) -> PatternKind { @@ -994,14 +993,12 @@ fn pattern(p: &mut Parser) -> PatternKind { let kind = collection(p, false); validate_pattern_at(p, m, true); - if kind == SyntaxKind::Parenthesized { - PatternKind::Ident - } else { + if kind != SyntaxKind::Parenthesized { p.wrap(m, SyntaxKind::Destructuring); - PatternKind::Destructuring } + PatternKind::Other } else if p.eat_if(SyntaxKind::Underscore) { - PatternKind::Placeholder + PatternKind::Other } else { p.expect(SyntaxKind::Ident); PatternKind::Ident @@ -1014,22 +1011,21 @@ fn let_binding(p: &mut Parser) { let m2 = p.marker(); let mut closure = false; - let mut destructuring = false; + let mut other = false; match pattern(p) { PatternKind::Ident => { - closure = p.directly_at(SyntaxKind::LeftParen); - if closure { + if p.directly_at(SyntaxKind::LeftParen) { let m3 = p.marker(); collection(p, false); validate_params_at(p, m3); p.wrap(m3, SyntaxKind::Params); + closure = true; } } - PatternKind::Placeholder => {} - PatternKind::Destructuring => destructuring = true, + PatternKind::Other => other = true, } - let f = if closure || destructuring { Parser::expect } else { Parser::eat_if }; + let f = if closure || other { Parser::expect } else { Parser::eat_if }; if f(p, SyntaxKind::Eq) { code_expr(p); } |
