summaryrefslogtreecommitdiffstats
path: root/Grammar
diff options
context:
space:
mode:
authorLysandros Nikolaou <lisandrosnik@gmail.com>2022-11-20 17:11:02 (GMT)
committerGitHub <noreply@github.com>2022-11-20 17:11:02 (GMT)
commit9c4232ae8972a33f84e875cfdd866318a1233e47 (patch)
treeee1b0534bb4149354fad86d837468c223edb9b80 /Grammar
parentb0e1f9c241cd8f8c864d51059217f997d3b792bf (diff)
downloadcpython-9c4232ae8972a33f84e875cfdd866318a1233e47.zip
cpython-9c4232ae8972a33f84e875cfdd866318a1233e47.tar.gz
cpython-9c4232ae8972a33f84e875cfdd866318a1233e47.tar.bz2
gh-99211: Point to except/except* on syntax errors when mixing them (GH-99215)
Automerge-Triggered-By: GH:lysnikolaou
Diffstat (limited to 'Grammar')
-rw-r--r--Grammar/python.gram4
1 files changed, 3 insertions, 1 deletions
diff --git a/Grammar/python.gram b/Grammar/python.gram
index c947d22..787fbad 100644
--- a/Grammar/python.gram
+++ b/Grammar/python.gram
@@ -1254,7 +1254,9 @@ 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* {
+ | 'try' ':' block* except_block+ a='except' b='*' expression ['as' NAME] ':' {
+ RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "cannot have both 'except' and 'except*' on the same 'try'") }
+ | 'try' ':' block* except_star_block+ a='except' [expression ['as' NAME]] ':' {
RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "cannot have both 'except' and 'except*' on the same 'try'") }
invalid_except_stmt:
| 'except' '*'? a=expression ',' expressions ['as' NAME ] ':' {