python / python/cpython

Specialize `match` syntax error for star pattern outside sequence pattern

Abierto
#145,240 2 comentarios 1 reacción 1 asignado Ver en GitHub

@johnslavik ya está trabajando en esto.

Desde el 3/3/2026.

interpreter-core topic-parser type-feature
Lenguaje dominante
Python
Estrellas
77.2k
Forks
35.9k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

Feature or enhancement

Proposal:

Consider a specialized syntax error for these cases:

# Star pattern is only allowed inside a sequence pattern
match subject:
    case *_:
        pass
    case *_ as x:
        pass
    case *foo:
        pass
    case *foo | 1:
        pass
    case 1 | *foo:
        pass
    case Foo(*_):
        pass
    case Foo(x=*_):
        pass
    case {*_}:
        pass

This was taken from https://github.com/astral-sh/ruff/blob/6ff4da454c448f01eb0b71728f3941870c811bfc/crates/ruff_python_parser/resources/invalid/statements/match/star_pattern_usage.py. 2+ years in Ruff's parser.

Current vs proposed:

❯ ./python.exe t.py
  File "/Users/bartosz.slawecki/Python/cpython/t.py", line 2
    case *_:
-          ^
-SyntaxError: invalid syntax
+        ^
+SyntaxError: star pattern is only allowed inside a sequence pattern

The code doesn't look obviously incorrect syntactically, which is why I think it's a good idea to add a more specific message.

Has this already been discussed elsewhere?

This is a minor feature, which does not need previous discussion elsewhere

Links to previous discussion of this feature:

No response

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.