mirror of https://github.com/python/cpython
bpo-46820: Fix a SyntaxError in a numeric literal followed by "not in" (GH-31479)
Fix parsing a numeric literal immediately (without spaces) followed by "not in" keywords, like in "1not in x". Now the parser only emits a warning, not a syntax error.
This commit is contained in:
parent
74127b89a8
commit
090e5c4b94
|
@ -251,6 +251,15 @@ class TokenTests(unittest.TestCase):
|
|||
check("1e3in x")
|
||||
check("1jin x")
|
||||
|
||||
check("0xfnot in x")
|
||||
check("0o7not in x")
|
||||
check("0b1not in x")
|
||||
check("9not in x")
|
||||
check("0not in x")
|
||||
check("1.not in x")
|
||||
check("1e3not in x")
|
||||
check("1jnot in x")
|
||||
|
||||
with warnings.catch_warnings():
|
||||
warnings.simplefilter('ignore', SyntaxWarning)
|
||||
check("0xfis x")
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Fix parsing a numeric literal immediately (without spaces) followed by "not
|
||||
in" keywords, like in ``1not in x``. Now the parser only emits a warning,
|
||||
not a syntax error.
|
|
@ -1253,6 +1253,9 @@ verify_end_of_number(struct tok_state *tok, int c, const char *kind)
|
|||
else if (c == 'o') {
|
||||
r = lookahead(tok, "r");
|
||||
}
|
||||
else if (c == 'n') {
|
||||
r = lookahead(tok, "ot");
|
||||
}
|
||||
if (r) {
|
||||
tok_backup(tok, c);
|
||||
if (parser_warn(tok, "invalid %s literal", kind)) {
|
||||
|
|
Loading…
Reference in New Issue