diff options
| author | jnyfah <jnyfaah@gmail.com> | 2025-01-16 12:54:26 +0100 |
|---|---|---|
| committer | jnyfah <jnyfaah@gmail.com> | 2025-01-16 12:54:26 +0100 |
| commit | 715e457500dd8a9f06f2fa92426a6266a1bf88f6 (patch) | |
| tree | 20f72f62c599d0720d24b706435b8e21247e38a4 | |
| parent | 39a1bb9e9841762c5e49586f6b245ddd43cd028c (diff) | |
| download | rust-715e457500dd8a9f06f2fa92426a6266a1bf88f6.tar.gz rust-715e457500dd8a9f06f2fa92426a6266a1bf88f6.zip | |
revert blocklike changes
3 files changed, 9 insertions, 8 deletions
diff --git a/src/tools/rust-analyzer/crates/parser/src/grammar.rs b/src/tools/rust-analyzer/crates/parser/src/grammar.rs index d3aa56c7ebd..fe6b904bd88 100644 --- a/src/tools/rust-analyzer/crates/parser/src/grammar.rs +++ b/src/tools/rust-analyzer/crates/parser/src/grammar.rs @@ -204,9 +204,8 @@ impl BlockLike { self == BlockLike::Block } - fn is_blocklike(expr: &CompletedMarker, p: &Parser<'_>) -> bool { - matches!(expr.kind(), BLOCK_EXPR | IF_EXPR | WHILE_EXPR | FOR_EXPR | LOOP_EXPR | MATCH_EXPR) - || (expr.last_token(p) == Some(T!['}']) && !matches!(expr.kind(), CLOSURE_EXPR)) + fn is_blocklike(kind: SyntaxKind) -> bool { + matches!(kind, BLOCK_EXPR | IF_EXPR | WHILE_EXPR | FOR_EXPR | LOOP_EXPR | MATCH_EXPR) } } diff --git a/src/tools/rust-analyzer/crates/parser/src/grammar/expressions.rs b/src/tools/rust-analyzer/crates/parser/src/grammar/expressions.rs index e7ba33bcb64..6494ce8d718 100644 --- a/src/tools/rust-analyzer/crates/parser/src/grammar/expressions.rs +++ b/src/tools/rust-analyzer/crates/parser/src/grammar/expressions.rs @@ -134,10 +134,12 @@ pub(super) fn let_stmt(p: &mut Parser<'_>, with_semi: Semicolon) { // test_err let_else_right_curly_brace // fn func() { let Some(_) = {Some(1)} else { panic!("h") };} if let Some(expr) = expr_after_eq { - if BlockLike::is_blocklike(&expr, p) { - p.error( - "right curly brace `}` before `else` in a `let...else` statement not allowed", - ) + if let Some(token) = expr.last_token(p) { + if token == T!['}'] { + p.error( + "right curly brace `}` before `else` in a `let...else` statement not allowed" + ) + } } } diff --git a/src/tools/rust-analyzer/crates/parser/src/grammar/expressions/atom.rs b/src/tools/rust-analyzer/crates/parser/src/grammar/expressions/atom.rs index 40705d4a392..407320e1d08 100644 --- a/src/tools/rust-analyzer/crates/parser/src/grammar/expressions/atom.rs +++ b/src/tools/rust-analyzer/crates/parser/src/grammar/expressions/atom.rs @@ -198,7 +198,7 @@ pub(super) fn atom_expr( } }; let blocklike = - if BlockLike::is_blocklike(&done, p) { BlockLike::Block } else { BlockLike::NotBlock }; + if BlockLike::is_blocklike(done.kind()) { BlockLike::Block } else { BlockLike::NotBlock }; Some((done, blocklike)) } |
