diff --git a/src/expressions/block-expr.md b/src/expressions/block-expr.md index 4ae74d1674..52c3050619 100644 --- a/src/expressions/block-expr.md +++ b/src/expressions/block-expr.md @@ -9,6 +9,11 @@ BlockExpression -> Statements? `}` +BlockExpressionNoInnerAttributes -> + `{` + Statements? + `}` + Statements -> Statement+ | Statement+ ExpressionWithoutBlock diff --git a/src/expressions/if-expr.md b/src/expressions/if-expr.md index 26b895dcf2..95e12ecf01 100644 --- a/src/expressions/if-expr.md +++ b/src/expressions/if-expr.md @@ -4,8 +4,8 @@ r[expr.if] r[expr.if.syntax] ```grammar,expressions IfExpression -> - `if` Conditions BlockExpression - (`else` ( BlockExpression | IfExpression ) )? + `if` Conditions BlockExpressionNoInnerAttributes + (`else` ( BlockExpressionNoInnerAttributes | IfExpression ) )? Conditions -> Expression _except [StructExpression]_ diff --git a/src/macros-by-example.md b/src/macros-by-example.md index beee8e0935..790e55a0b0 100644 --- a/src/macros-by-example.md +++ b/src/macros-by-example.md @@ -106,7 +106,7 @@ In the matcher, `$` _name_ `:` _fragment-specifier_ matches a Rust syntax fragme r[macro.decl.meta.specifier] Valid fragment specifiers are: - * `block`: a [BlockExpression] + * `block`: a [BlockExpressionNoInnerAttributes] * `expr`: an [Expression] * `expr_2021`: an [Expression] except [UnderscoreExpression] and [ConstBlockExpression] (see [macro.decl.meta.edition2024]) * `ident`: an [IDENTIFIER_OR_KEYWORD] except `_`, [RAW_IDENTIFIER], or [`$crate`] diff --git a/src/statements.md b/src/statements.md index f194e343a6..a3e89e8d81 100644 --- a/src/statements.md +++ b/src/statements.md @@ -58,7 +58,8 @@ LetStatement -> OuterAttribute* `let` PatternNoTopAlt ( `:` Type )? ( `=` Expression - | `=` Expression _except [LazyBooleanExpression] or end with a `}`_ `else` BlockExpression + | `=` Expression _except [LazyBooleanExpression] or end with a `}`_ + `else` BlockExpressionNoInnerAttributes )? `;` ```