mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-33305: Improve SyntaxError for invalid numerical literals. (GH-6517)
This commit is contained in:
parent
2a9b8babf0
commit
cf7303ed2a
3 changed files with 77 additions and 13 deletions
|
@ -100,6 +100,8 @@ INVALID_UNDERSCORE_LITERALS = [
|
|||
|
||||
class TokenTests(unittest.TestCase):
|
||||
|
||||
check_syntax_error = check_syntax_error
|
||||
|
||||
def test_backslash(self):
|
||||
# Backslash means line continuation:
|
||||
x = 1 \
|
||||
|
@ -184,6 +186,28 @@ class TokenTests(unittest.TestCase):
|
|||
# Sanity check: no literal begins with an underscore
|
||||
self.assertRaises(NameError, eval, "_0")
|
||||
|
||||
def test_bad_numerical_literals(self):
|
||||
check = self.check_syntax_error
|
||||
check("0b12", "invalid digit '2' in binary literal")
|
||||
check("0b1_2", "invalid digit '2' in binary literal")
|
||||
check("0b2", "invalid digit '2' in binary literal")
|
||||
check("0b1_", "invalid binary literal")
|
||||
check("0b", "invalid binary literal")
|
||||
check("0o18", "invalid digit '8' in octal literal")
|
||||
check("0o1_8", "invalid digit '8' in octal literal")
|
||||
check("0o8", "invalid digit '8' in octal literal")
|
||||
check("0o1_", "invalid octal literal")
|
||||
check("0o", "invalid octal literal")
|
||||
check("0x1_", "invalid hexadecimal literal")
|
||||
check("0x", "invalid hexadecimal literal")
|
||||
check("1_", "invalid decimal literal")
|
||||
check("012",
|
||||
"leading zeros in decimal integer literals are not permitted; "
|
||||
"use an 0o prefix for octal integers")
|
||||
check("1.2_", "invalid decimal literal")
|
||||
check("1e2_", "invalid decimal literal")
|
||||
check("1e+", "invalid decimal literal")
|
||||
|
||||
def test_string_literals(self):
|
||||
x = ''; y = ""; self.assertTrue(len(x) == 0 and x == y)
|
||||
x = '\''; y = "'"; self.assertTrue(len(x) == 1 and x == y and ord(x) == 39)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue