mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
bpo-35494: Improve syntax error messages for unbalanced parentheses in f-string. (GH-11161)
This commit is contained in:
parent
44cc4822bb
commit
58159ef856
3 changed files with 51 additions and 17 deletions
|
@ -368,9 +368,27 @@ non-important content
|
|||
])
|
||||
|
||||
def test_mismatched_parens(self):
|
||||
self.assertAllRaise(SyntaxError, 'f-string: mismatched',
|
||||
self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\}' "
|
||||
r"does not match opening parenthesis '\('",
|
||||
["f'{((}'",
|
||||
])
|
||||
self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\)' "
|
||||
r"does not match opening parenthesis '\['",
|
||||
["f'{a[4)}'",
|
||||
])
|
||||
self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\]' "
|
||||
r"does not match opening parenthesis '\('",
|
||||
["f'{a(4]}'",
|
||||
])
|
||||
self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\}' "
|
||||
r"does not match opening parenthesis '\['",
|
||||
["f'{a[4}'",
|
||||
])
|
||||
self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\}' "
|
||||
r"does not match opening parenthesis '\('",
|
||||
["f'{a(4}'",
|
||||
])
|
||||
self.assertRaises(SyntaxError, eval, "f'{" + "("*500 + "}'")
|
||||
|
||||
def test_double_braces(self):
|
||||
self.assertEqual(f'{{', '{')
|
||||
|
@ -448,7 +466,9 @@ non-important content
|
|||
["f'{1#}'", # error because the expression becomes "(1#)"
|
||||
"f'{3(#)}'",
|
||||
"f'{#}'",
|
||||
"f'{)#}'", # When wrapped in parens, this becomes
|
||||
])
|
||||
self.assertAllRaise(SyntaxError, r"f-string: unmatched '\)'",
|
||||
["f'{)#}'", # When wrapped in parens, this becomes
|
||||
# '()#)'. Make sure that doesn't compile.
|
||||
])
|
||||
|
||||
|
@ -577,7 +597,7 @@ non-important content
|
|||
"f'{,}'", # this is (,), which is an error
|
||||
])
|
||||
|
||||
self.assertAllRaise(SyntaxError, "f-string: expecting '}'",
|
||||
self.assertAllRaise(SyntaxError, r"f-string: unmatched '\)'",
|
||||
["f'{3)+(4}'",
|
||||
])
|
||||
|
||||
|
@ -1003,16 +1023,6 @@ non-important content
|
|||
self.assertEqual('{d[a]}'.format(d=d), 'string')
|
||||
self.assertEqual('{d[0]}'.format(d=d), 'integer')
|
||||
|
||||
def test_invalid_expressions(self):
|
||||
self.assertAllRaise(SyntaxError,
|
||||
r"closing parenthesis '\)' does not match "
|
||||
r"opening parenthesis '\[' \(<fstring>, line 1\)",
|
||||
[r"f'{a[4)}'"])
|
||||
self.assertAllRaise(SyntaxError,
|
||||
r"closing parenthesis '\]' does not match "
|
||||
r"opening parenthesis '\(' \(<fstring>, line 1\)",
|
||||
[r"f'{a(4]}'"])
|
||||
|
||||
def test_errors(self):
|
||||
# see issue 26287
|
||||
self.assertAllRaise(TypeError, 'unsupported',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue