]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.15] Link to existing rules in compound_stmts.rst (GH-149811) (GH-149836)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 14 May 2026 17:09:05 +0000 (19:09 +0200)
committerGitHub <noreply@github.com>
Thu, 14 May 2026 17:09:05 +0000 (19:09 +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 72e1cad3bbd8924adc6cbbecbbe3b26f848145b6..a819c41d834aa70940bde221e9e38fc3dbd81b75 100644 (file)
@@ -618,8 +618,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::
@@ -709,7 +709,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