]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Link to existing rules in compound_stmts.rst (GH-149811)
authorPetr Viktorin <encukou@gmail.com>
Thu, 14 May 2026 16:47:52 +0000 (18:47 +0200)
committerGitHub <noreply@github.com>
Thu, 14 May 2026 16:47:52 +0000 (18:47 +0200)
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.

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