python / python/cpython

Incorrect SyntaxError location for walrus operator in multi-line conditional expression

Aberta
#146,260 16 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

interpreter-core topic-parser type-bug
Linguagem predominante
Python
Estrelas
77.2k
Forks
36k
Métricas de merge de PRs
Métricas de PR pendentes

Descrição

Bug report

Bug description:

When using the walrus operator (:=) inside a multi-line conditional expression, Python raises a SyntaxError with the error position pointing to the wrong location.
The caret (^) is shown under the expression body instead of the if clause where the syntax issue actually occurs, making debugging misleading.
The error indicator should instead highlight the if portion (or walrus usage context), not the preceding expression line.

Code
(
    1
    if x := True
    else 2
)
Traceback
File "[REDACTED]", line 2
    1
    ^
SyntaxError: expected 'else' after 'if' expression

It locates error to 1 but it should have located to if x := True (line no. 3)

It does not errors when condition is parenthesized:

(
    1
    if (x := True)
    else 2
)  # output: 1
CPython versions tested on:

3.14

Operating systems tested on:

Linux

Linked PRs
  • gh-146305

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Reproduza a expressão condicional multilinha e sua variante entre parênteses no CPython 3.14 e, em seguida, rastreie o tratamento da localização do parser ou do erro de sintaxe para a expressão walrus. Considera-se concluído quando o cursor aponta para a linha if x := True, enquanto o caso entre parênteses continua sendo analisado corretamente e relata seu resultado.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
python
Domínio
compilers
Tipo de issue
Bug
Dificuldade
4/5
Tempo estimado
3-5 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
45/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.