diff options
| author | Jonas Schievink <jonas.schievink@ferrous-systems.com> | 2022-12-12 12:57:29 +0100 |
|---|---|---|
| committer | Jonas Schievink <jonas.schievink@ferrous-systems.com> | 2022-12-12 12:57:29 +0100 |
| commit | ed48bd8b9ddef0f57e54de2deb46c41d6b6ec4e3 (patch) | |
| tree | 3dfaa7b23434f89a7eb162f5bd5b12cc9886dbf9 /crates/parser/src | |
| parent | 21e61bee8b74e93f14205f4a6c316db08f811e38 (diff) | |
| download | rust-ed48bd8b9ddef0f57e54de2deb46c41d6b6ec4e3.tar.gz rust-ed48bd8b9ddef0f57e54de2deb46c41d6b6ec4e3.zip | |
Fix parsing of `_ = x` in closure body
Diffstat (limited to 'crates/parser/src')
| -rw-r--r-- | crates/parser/src/grammar/expressions.rs | 2 | ||||
| -rw-r--r-- | crates/parser/src/grammar/expressions/atom.rs | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/crates/parser/src/grammar/expressions.rs b/crates/parser/src/grammar/expressions.rs index dcaceade652..8932330b825 100644 --- a/crates/parser/src/grammar/expressions.rs +++ b/crates/parser/src/grammar/expressions.rs @@ -288,7 +288,7 @@ fn expr_bp( } const LHS_FIRST: TokenSet = - atom::ATOM_EXPR_FIRST.union(TokenSet::new(&[T![&], T![*], T![!], T![.], T![-]])); + atom::ATOM_EXPR_FIRST.union(TokenSet::new(&[T![&], T![*], T![!], T![.], T![-], T![_]])); fn lhs(p: &mut Parser<'_>, r: Restrictions) -> Option<(CompletedMarker, BlockLike)> { let m; diff --git a/crates/parser/src/grammar/expressions/atom.rs b/crates/parser/src/grammar/expressions/atom.rs index 99f42a26623..81027a7bf33 100644 --- a/crates/parser/src/grammar/expressions/atom.rs +++ b/crates/parser/src/grammar/expressions/atom.rs @@ -278,6 +278,8 @@ fn closure_expr(p: &mut Parser<'_>) -> CompletedMarker { // fn main() { || -> i32 { 92 }(); } block_expr(p); } else if p.at_ts(EXPR_FIRST) { + // test closure_body_underscore_assignment + // fn main() { || _ = 0; } expr(p); } else { p.error("expected expression"); |
