Make an f-string error message more exact and consistent.

This commit is contained in:
Eric V. Smith 2016-09-11 18:58:20 -04:00
parent 13a6d2834a
commit 09835dcdbb
2 changed files with 3 additions and 2 deletions

View File

@ -182,9 +182,10 @@ f'{a * x()}'"""
self.assertEqual(f'{"#"}', '#') self.assertEqual(f'{"#"}', '#')
self.assertEqual(f'{d["#"]}', 'hash') self.assertEqual(f'{d["#"]}', 'hash')
self.assertAllRaise(SyntaxError, "f-string cannot include '#'", self.assertAllRaise(SyntaxError, "f-string expression part cannot include '#'",
["f'{1#}'", # error because the expression becomes "(1#)" ["f'{1#}'", # error because the expression becomes "(1#)"
"f'{3(#)}'", "f'{3(#)}'",
"f'{#}'",
]) ])
def test_many_expressions(self): def test_many_expressions(self):

View File

@ -4419,7 +4419,7 @@ fstring_find_expr(const char **str, const char *end, int raw, int recurse_lvl,
} else if (ch == '#') { } else if (ch == '#') {
/* Error: can't include a comment character, inside parens /* Error: can't include a comment character, inside parens
or not. */ or not. */
ast_error(c, n, "f-string cannot include '#'"); ast_error(c, n, "f-string expression part cannot include '#'");
return -1; return -1;
} else if (nested_depth == 0 && } else if (nested_depth == 0 &&
(ch == '!' || ch == ':' || ch == '}')) { (ch == '!' || ch == ':' || ch == '}')) {