mirror of https://github.com/python/cpython
gh-88943: Improve syntax error for non-ASCII character that follows a numerical literal (GH-109081)
It now points on the invalid non-ASCII character, not on the valid numerical literal.
This commit is contained in:
parent
ac31f714c3
commit
b2729e93e9
|
@ -236,6 +236,10 @@ class TokenTests(unittest.TestCase):
|
||||||
check(f"[{num}for x in ()]")
|
check(f"[{num}for x in ()]")
|
||||||
check(f"{num}spam", error=True)
|
check(f"{num}spam", error=True)
|
||||||
|
|
||||||
|
# gh-88943: Invalid non-ASCII character following a numerical literal.
|
||||||
|
with self.assertRaisesRegex(SyntaxError, r"invalid character '⁄' \(U\+2044\)"):
|
||||||
|
compile(f"{num}⁄7", "<testcase>", "eval")
|
||||||
|
|
||||||
with self.assertWarnsRegex(SyntaxWarning, r'invalid \w+ literal'):
|
with self.assertWarnsRegex(SyntaxWarning, r'invalid \w+ literal'):
|
||||||
compile(f"{num}is x", "<testcase>", "eval")
|
compile(f"{num}is x", "<testcase>", "eval")
|
||||||
with warnings.catch_warnings():
|
with warnings.catch_warnings():
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Improve syntax error for non-ASCII character that follows a numerical
|
||||||
|
literal. It now points on the invalid non-ASCII character, not on the valid
|
||||||
|
numerical literal.
|
|
@ -1642,7 +1642,7 @@ verify_end_of_number(struct tok_state *tok, int c, const char *kind) {
|
||||||
tok_nextc(tok);
|
tok_nextc(tok);
|
||||||
}
|
}
|
||||||
else /* In future releases, only error will remain. */
|
else /* In future releases, only error will remain. */
|
||||||
if (is_potential_identifier_char(c)) {
|
if (c < 128 && is_potential_identifier_char(c)) {
|
||||||
tok_backup(tok, c);
|
tok_backup(tok, c);
|
||||||
syntaxerror(tok, "invalid %s literal", kind);
|
syntaxerror(tok, "invalid %s literal", kind);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue