From 53d6f06420358524bd457257c095cf1754e596fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Le=C3=B3n=20Orell=20Valerian=20Liehr?= Date: Tue, 12 May 2026 00:41:47 +0200 Subject: [PATCH] Fix the grammar of const param defaults by reusing rule for const args `struct T;` is syntactically valid but the previous definition of rule *ConstParam* didn't capture that fact since it listed *IDENTIFIER* while it needed to be *SimplePathSegment*. --- src/items/generics.md | 4 +--- src/paths.md | 7 +++---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/items/generics.md b/src/items/generics.md index 6161d11975..458f6e4a7e 100644 --- a/src/items/generics.md +++ b/src/items/generics.md @@ -11,9 +11,7 @@ LifetimeParam -> Lifetime ( `:` LifetimeBounds )? TypeParam -> IDENTIFIER ( `:` Bounds? )? ( `=` Type )? -ConstParam -> - `const` IDENTIFIER `:` Type - ( `=` ( BlockExpression | IDENTIFIER | `-`?LiteralExpression ) )? +ConstParam -> `const` IDENTIFIER `:` Type ( `=` ConstArg )? ``` r[items.generics.syntax.intro] diff --git a/src/paths.md b/src/paths.md index 98cff23007..4f06cf1595 100644 --- a/src/paths.md +++ b/src/paths.md @@ -62,12 +62,11 @@ TypeList -> ( Type `,` )* Type `,`? GenericArg -> - Lifetime | Type | GenericArgsConst | GenericArgsBinding | GenericArgsBounds + Lifetime | Type | ConstArg | GenericArgsBinding | GenericArgsBounds -GenericArgsConst -> +ConstArg -> BlockExpression - | LiteralExpression - | `-` LiteralExpression + | `-`? LiteralExpression | SimplePathSegment GenericArgsBinding ->