]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] Link to existing rules in compound_stmts.rst (GH-149811) (GH-149838)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 14 May 2026 17:34:29 +0000 (19:34 +0200)
committerGitHub <noreply@github.com>
Thu, 14 May 2026 17:34:29 +0000 (19:34 +0200)
Link to existing rules in compound_stmts.rst (GH-149811)

In gh-138418, `!` was added to links to rules that don't exist in
the docs, in order to silence broken link warnings.
However, productionlist doesn't parse the `!`, which ends up in
the rendered documentation. (It's possible that gh-127835 broke
the `!` support.)

Replace the names with ones that appear in docs:

- `star_named_expression` in the grammar corresponds to
  `flexible_expression` in the docs
- `star_named_expressions` in the grammar corresponds to
  `flexible_expression_list` in the docs
- `named_expression` in the grammar corresponds to
  `assignment_expression` in the docs

Having two sets of names isn't great of course. Consolidating them
is tracked in (subissues of) gh-127833.
(cherry picked from commit c37529293d1e05081cb4e8668162c76583b88007)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Doc/reference/compound_stmts.rst

index 5c35014b246b64a3d678d704d24b1436bbe0365b..303c201f1a6feb29bb2d77e996682db33515cdfc 100644 (file)
@@ -611,8 +611,8 @@ The match statement is used for pattern matching.  Syntax:
 
 .. productionlist:: python-grammar
    match_stmt: 'match' `subject_expr` ":" NEWLINE INDENT `case_block`+ DEDENT
-   subject_expr: `!star_named_expression` "," `!star_named_expressions`?
-               : | `!named_expression`
+   subject_expr: `flexible_expression` "," [`flexible_expression_list` [',']]
+               : | `assignment_expression`
    case_block: 'case' `patterns` [`guard`] ":" `!block`
 
 .. note::
@@ -702,7 +702,7 @@ Guards
 .. index:: ! guard
 
 .. productionlist:: python-grammar
-   guard: "if" `!named_expression`
+   guard: "if" `assignment_expression`
 
 A ``guard`` (which is part of the ``case``) must succeed for code inside
 the ``case`` block to execute.  It takes the form: :keyword:`if` followed by an