mirror of https://github.com/python/cpython
bpo-44838: Refine the custom syntax errors for invalid 'if' expressions (GH-27615)
This commit is contained in:
parent
3d315c3116
commit
f5cbea6b1b
|
@ -1083,7 +1083,7 @@ invalid_expression:
|
|||
# Soft keywords need to also be ignored because they can be parsed as NAME NAME
|
||||
| !(NAME STRING | SOFT_KEYWORD) a=disjunction b=expression_without_invalid {
|
||||
RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "invalid syntax. Perhaps you forgot a comma?") }
|
||||
| a=disjunction 'if' b=disjunction !'else' { RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "expected 'else' after 'if' expression") }
|
||||
| a=disjunction 'if' b=disjunction !('else'|':') { RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "expected 'else' after 'if' expression") }
|
||||
|
||||
invalid_named_expression:
|
||||
| a=expression ':=' expression {
|
||||
|
|
|
@ -152,6 +152,14 @@ SyntaxError: expected 'else' after 'if' expression
|
|||
Traceback (most recent call last):
|
||||
SyntaxError: expected 'else' after 'if' expression
|
||||
|
||||
>>> if True:
|
||||
... print("Hello"
|
||||
...
|
||||
... if 2:
|
||||
... print(123))
|
||||
Traceback (most recent call last):
|
||||
SyntaxError: invalid syntax
|
||||
|
||||
>>> True = True = 3
|
||||
Traceback (most recent call last):
|
||||
SyntaxError: cannot assign to True
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fixed a bug that was causing the parser to raise an incorrect custom
|
||||
:exc:`SyntaxError` for invalid 'if' expressions. Patch by Pablo Galindo.
|
2661
Parser/parser.c
2661
Parser/parser.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue