bpo-43149: Correct the syntax error message for multiple exception types (GH-25996)

Automerge-Triggered-By: GH:pablogsal
This commit is contained in:
Pablo Galindo 2021-05-08 19:24:41 +01:00 committed by GitHub
parent 873275e64a
commit 6692dc1ca9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 10 additions and 8 deletions

View File

@ -248,7 +248,7 @@ have been incorporated. Some of the most notable ones:
File "<stdin>", line 3 File "<stdin>", line 3
except NotEnoughScienceError, NotEnoughResourcesError: except NotEnoughScienceError, NotEnoughResourcesError:
^ ^
SyntaxError: exception group must be parenthesized SyntaxError: multiple exception types must be parenthesized
(Contributed by Pablo Galindo in :issue:`43149`) (Contributed by Pablo Galindo in :issue:`43149`)

View File

@ -956,7 +956,7 @@ invalid_try_stmt:
RAISE_INDENTATION_ERROR("expected an indented block after 'try' statement on line %d", a->lineno) } RAISE_INDENTATION_ERROR("expected an indented block after 'try' statement on line %d", a->lineno) }
invalid_except_stmt: invalid_except_stmt:
| 'except' a=expression ',' expressions ['as' NAME ] ':' { | 'except' a=expression ',' expressions ['as' NAME ] ':' {
RAISE_SYNTAX_ERROR_STARTING_FROM(a, "exception group must be parenthesized") } RAISE_SYNTAX_ERROR_STARTING_FROM(a, "multiple exception types must be parenthesized") }
| a='except' expression ['as' NAME ] NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") } | a='except' expression ['as' NAME ] NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") }
| a='except' NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") } | a='except' NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") }
invalid_finally_stmt: invalid_finally_stmt:

View File

@ -1068,7 +1068,7 @@ Make sure that the old "raise X, Y[, Z]" form is gone:
... ...
SyntaxError: invalid syntax SyntaxError: invalid syntax
Check that an exception group with missing parentheses Check that an multiple exception types with missing parentheses
raise a custom exception raise a custom exception
>>> try: >>> try:
@ -1076,21 +1076,21 @@ raise a custom exception
... except A, B: ... except A, B:
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: exception group must be parenthesized SyntaxError: multiple exception types must be parenthesized
>>> try: >>> try:
... pass ... pass
... except A, B, C: ... except A, B, C:
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: exception group must be parenthesized SyntaxError: multiple exception types must be parenthesized
>>> try: >>> try:
... pass ... pass
... except A, B, C as blech: ... except A, B, C as blech:
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: exception group must be parenthesized SyntaxError: multiple exception types must be parenthesized
>>> try: >>> try:
... pass ... pass
@ -1099,7 +1099,7 @@ raise a custom exception
... finally: ... finally:
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: exception group must be parenthesized SyntaxError: multiple exception types must be parenthesized
>>> f(a=23, a=234) >>> f(a=23, a=234)

View File

@ -0,0 +1,2 @@
Corrent the syntax error message regarding multiple exception types to not
refer to "exception groups". Patch by Pablo Galindo

View File

@ -19978,7 +19978,7 @@ invalid_except_stmt_rule(Parser *p)
) )
{ {
D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'")); D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'"));
_res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "exception group must be parenthesized" ); _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized" );
if (_res == NULL && PyErr_Occurred()) { if (_res == NULL && PyErr_Occurred()) {
p->error_indicator = 1; p->error_indicator = 1;
D(p->level--); D(p->level--);