From 028028ede3df4537223a2d10b2648e16f48a8826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Gia=20Phong?= Date: Thu, 28 May 2026 13:53:43 +0900 Subject: [PATCH] langref: grammar: remove redundant optional match std.zig.AstSmith.pegSuffixOp is also fixed to match the grammar. --- doc/langref.html.in | 2 +- lib/std/zig/AstSmith.zig | 16 +++++++++------- lib/std/zig/Parse.zig | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/doc/langref.html.in b/doc/langref.html.in index 6ce0cf93ed30ab31e753c11b182c686aa27c8548..94c1b79219b1ade2779aba1343ae9e70e1559a87 100644 --- a/doc/langref.html.in +++ b/doc/langref.html.in @@ -8079,7 +8079,7 @@ PrefixTypeOp / ArrayTypeStart SuffixOp - <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET + <- LBRACKET Expr (DOT2 Expr? (COLON Expr)?)? RBRACKET / DOT IDENTIFIER / DOTASTERISK / DOTQUESTIONMARK diff --git a/lib/std/zig/AstSmith.zig b/lib/std/zig/AstSmith.zig index 033556654cee53b3f2203840fb347e9f85dae7d3..5d6ee9a570e1c12688a96d884b8f8b8118a323a9 100644 --- a/lib/std/zig/AstSmith.zig +++ b/lib/std/zig/AstSmith.zig @@ -1810,7 +1810,7 @@ fn pegPrefixTypeOp(a: *AstSmith) SourceError!void { } /// SuffixOp -/// <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET +/// <- LBRACKET Expr (DOT2 Expr? (COLON Expr)?)? RBRACKET /// / DOT IDENTIFIER /// / DOTASTERISK /// / DOTQUESTIONMARK @@ -1820,12 +1820,14 @@ fn pegSuffixOp(a: *AstSmith) SourceError!void { try a.pegToken(.l_bracket); try a.pegExpr(); - const components = a.smith.value(u2); - if (components >= 1) try a.pegToken(.ellipsis2); - if (components >= 2) try a.pegExpr(); - if (components >= 3) { - try a.pegToken(.colon); - try a.pegExpr(); + if (a.smith.value(bool)) { + try a.pegToken(.ellipsis2); + if (a.smith.value(bool)) + try a.pegExpr(); + if (a.smith.value(bool)) { + try a.pegToken(.colon); + try a.pegExpr(); + } } try a.pegToken(.r_bracket); diff --git a/lib/std/zig/Parse.zig b/lib/std/zig/Parse.zig index c41d5441075e751b7f4b65778ddf0a7b78423e7c..d4c6015131d4c612633e3b87f8da61f0faeaf6a4 100644 --- a/lib/std/zig/Parse.zig +++ b/lib/std/zig/Parse.zig @@ -3137,7 +3137,7 @@ fn parsePtrModifiers(p: *Parse) !PtrModifiers { } /// SuffixOp -/// <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET +/// <- LBRACKET Expr (DOT2 Expr? (COLON Expr)?)? RBRACKET /// / DOT IDENTIFIER /// / DOTASTERISK /// / DOTQUESTIONMARK -- 2.54.0