Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions Grammar/python.gram
Original file line number Diff line number Diff line change
Expand Up @@ -1254,8 +1254,10 @@ invalid_try_stmt:
| a='try' ':' NEWLINE !INDENT {
RAISE_INDENTATION_ERROR("expected an indented block after 'try' statement on line %d", a->lineno) }
| 'try' ':' block !('except' | 'finally') { RAISE_SYNTAX_ERROR("expected 'except' or 'finally' block") }
| a='try' ':' block* ((except_block+ except_star_block) | (except_star_block+ except_block)) block* {
RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "cannot have both 'except' and 'except*' on the same 'try'") }
| 'try' ':' block* except_block+ a='except' b='*' expression ['as' NAME] ':' block* {
RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "cannot have 'except*' in a 'try' statement with 'except'") }
| 'try' ':' block* except_star_block+ a='except' [expression ['as' NAME]] ':' block* {
RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "cannot have 'except' in a 'try' statement with 'except*'") }
invalid_except_stmt:
| 'except' '*'? a=expression ',' expressions ['as' NAME ] ':' {
RAISE_SYNTAX_ERROR_STARTING_FROM(a, "multiple exception types must be parenthesized") }
Expand Down
16 changes: 8 additions & 8 deletions Lib/test/test_syntax.py
Original file line number Diff line number Diff line change
Expand Up @@ -1202,7 +1202,7 @@
... except* ValueError:
... pass
Traceback (most recent call last):
SyntaxError: cannot have both 'except' and 'except*' on the same 'try'
SyntaxError: cannot have 'except*' in a 'try' statement with 'except'

>>> try:
... pass
Expand All @@ -1211,7 +1211,7 @@
... except ValueError:
... pass
Traceback (most recent call last):
SyntaxError: cannot have both 'except' and 'except*' on the same 'try'
SyntaxError: cannot have 'except' in a 'try' statement with 'except*'

>>> try:
... pass
Expand All @@ -1222,7 +1222,7 @@
... except* ValueError:
... pass
Traceback (most recent call last):
SyntaxError: cannot have both 'except' and 'except*' on the same 'try'
SyntaxError: cannot have 'except*' in a 'try' statement with 'except'

>>> try:
... pass
Expand All @@ -1233,7 +1233,7 @@
... except ValueError:
... pass
Traceback (most recent call last):
SyntaxError: cannot have both 'except' and 'except*' on the same 'try'
SyntaxError: cannot have 'except' in a 'try' statement with 'except*'

Ensure that early = are not matched by the parser as invalid comparisons
>>> f(2, 4, x=34); 1 $ 2
Expand Down Expand Up @@ -2016,13 +2016,13 @@ def test_generator_in_function_call(self):

def test_except_then_except_star(self):
self._check_error("try: pass\nexcept ValueError: pass\nexcept* TypeError: pass",
r"cannot have both 'except' and 'except\*' on the same 'try'",
lineno=1, end_lineno=1, offset=1, end_offset=4)
r"cannot have 'except\*' in a 'try' statement with 'except'",
lineno=3, end_lineno=3, offset=1, end_offset=8)

def test_except_star_then_except(self):
self._check_error("try: pass\nexcept* ValueError: pass\nexcept TypeError: pass",
r"cannot have both 'except' and 'except\*' on the same 'try'",
lineno=1, end_lineno=1, offset=1, end_offset=4)
r"cannot have 'except' in a 'try' statement with 'except\*'",
lineno=3, end_lineno=3, offset=1, end_offset=7)

def test_empty_line_after_linecont(self):
# See issue-40847
Expand Down
Loading