mirror of
https://github.com/python/cpython.git
synced 2025-08-27 12:16:04 +00:00
gh-123440: Improve error message for except as
used with not a name (#123442)
This commit is contained in:
parent
d8e69b2c1b
commit
e451a8937d
4 changed files with 2025 additions and 1715 deletions
|
@ -1359,6 +1359,36 @@ Custom error message for try block mixing except and except*
|
|||
Traceback (most recent call last):
|
||||
SyntaxError: cannot have both 'except' and 'except*' on the same 'try'
|
||||
|
||||
Better error message for using `except as` with not a name:
|
||||
|
||||
>>> try:
|
||||
... pass
|
||||
... except TypeError as obj.attr:
|
||||
... pass
|
||||
Traceback (most recent call last):
|
||||
SyntaxError: cannot use except statement with attribute
|
||||
|
||||
>>> try:
|
||||
... pass
|
||||
... except TypeError as obj[1]:
|
||||
... pass
|
||||
Traceback (most recent call last):
|
||||
SyntaxError: cannot use except statement with subscript
|
||||
|
||||
>>> try:
|
||||
... pass
|
||||
... except* TypeError as (obj, name):
|
||||
... pass
|
||||
Traceback (most recent call last):
|
||||
SyntaxError: cannot use except* statement with tuple
|
||||
|
||||
>>> try:
|
||||
... pass
|
||||
... except* TypeError as 1:
|
||||
... pass
|
||||
Traceback (most recent call last):
|
||||
SyntaxError: cannot use except* statement with literal
|
||||
|
||||
Ensure that early = are not matched by the parser as invalid comparisons
|
||||
>>> f(2, 4, x=34); 1 $ 2
|
||||
Traceback (most recent call last):
|
||||
|
@ -2770,6 +2800,23 @@ while 1:
|
|||
with self.assertRaises(SyntaxError):
|
||||
compile(source, "<string>", "exec")
|
||||
|
||||
def test_except_stmt_invalid_as_expr(self):
|
||||
self._check_error(
|
||||
textwrap.dedent(
|
||||
"""
|
||||
try:
|
||||
pass
|
||||
except ValueError as obj.attr:
|
||||
pass
|
||||
"""
|
||||
),
|
||||
errtext="cannot use except statement with attribute",
|
||||
lineno=4,
|
||||
end_lineno=4,
|
||||
offset=22,
|
||||
end_offset=22 + len("obj.attr"),
|
||||
)
|
||||
|
||||
|
||||
def load_tests(loader, tests, pattern):
|
||||
tests.addTest(doctest.DocTestSuite())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue