diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2022-04-27 17:15:14 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-27 17:15:14 (GMT) |
commit | 43a8bf1ea43127aa0d4d05f9db74827899808266 (patch) | |
tree | 906a7d4a0f551b97316c202d561d02de9ba0571f /Lib/test/test_grammar.py | |
parent | f60b4c3d74f241775f80affe60dcba6448634fe3 (diff) | |
download | cpython-43a8bf1ea43127aa0d4d05f9db74827899808266.zip cpython-43a8bf1ea43127aa0d4d05f9db74827899808266.tar.gz cpython-43a8bf1ea43127aa0d4d05f9db74827899808266.tar.bz2 |
gh-87999: Change warning type for numeric literal followed by keyword (GH-91980)
The warning emitted by the Python parser for a numeric literal
immediately followed by keyword has been changed from deprecation
warning to syntax warning.
Diffstat (limited to 'Lib/test/test_grammar.py')
-rw-r--r-- | Lib/test/test_grammar.py | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py index 2e29cdb..da88519 100644 --- a/Lib/test/test_grammar.py +++ b/Lib/test/test_grammar.py @@ -104,6 +104,7 @@ INVALID_UNDERSCORE_LITERALS = [ class TokenTests(unittest.TestCase): from test.support import check_syntax_error + from test.support.warnings_helper import check_syntax_warning def test_backslash(self): # Backslash means line continuation: @@ -178,7 +179,7 @@ class TokenTests(unittest.TestCase): def test_float_exponent_tokenization(self): # See issue 21642. with warnings.catch_warnings(): - warnings.simplefilter('ignore', DeprecationWarning) + warnings.simplefilter('ignore', SyntaxWarning) self.assertEqual(eval("1 if 1else 0"), 1) self.assertEqual(eval("1 if 0else 0"), 0) self.assertRaises(SyntaxError, eval, "0 if 1Else 0") @@ -218,12 +219,13 @@ class TokenTests(unittest.TestCase): with self.subTest(expr=test): if error: with warnings.catch_warnings(record=True) as w: - with self.assertRaises(SyntaxError): + with self.assertRaisesRegex(SyntaxError, + r'invalid \w+ literal'): compile(test, "<testcase>", "eval") self.assertEqual(w, []) else: - with self.assertWarns(DeprecationWarning): - compile(test, "<testcase>", "eval") + self.check_syntax_warning(test, + errtext=r'invalid \w+ literal') for num in "0xf", "0o7", "0b1", "9", "0", "1.", "1e3", "1j": compile(num, "<testcase>", "eval") @@ -231,15 +233,22 @@ class TokenTests(unittest.TestCase): check(f"{num}or x", error=(num == "0")) check(f"{num}in x") check(f"{num}not in x") - with warnings.catch_warnings(): - warnings.filterwarnings('ignore', '"is" with a literal', - SyntaxWarning) - check(f"{num}is x") check(f"{num}if x else y") check(f"x if {num}else y", error=(num == "0xf")) check(f"[{num}for x in ()]") check(f"{num}spam", error=True) + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', '"is" with a literal', + SyntaxWarning) + with self.assertWarnsRegex(SyntaxWarning, + r'invalid \w+ literal'): + compile(f"{num}is x", "<testcase>", "eval") + warnings.simplefilter('error', SyntaxWarning) + with self.assertRaisesRegex(SyntaxError, + r'invalid \w+ literal'): + compile(f"{num}is x", "<testcase>", "eval") + check("[0x1ffor x in ()]") check("[0x1for x in ()]") check("[0xfor x in ()]") |