[3.13] gh-122026: Fix identification of mismatched parentheses inside f-strings (GH-122028) (#122041)

This commit is contained in:
Miss Islington (bot) 2024-07-19 19:32:34 +02:00 committed by GitHub
parent 9a332f260d
commit a6c1081cbe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 6 additions and 0 deletions

View file

@ -897,6 +897,7 @@ x = (
"f'{:2}'",
"f'''{\t\f\r\n:a}'''",
"f'{:'",
"F'{[F'{:'}[F'{:'}]]]",
])
self.assertAllRaise(SyntaxError,

View file

@ -0,0 +1,2 @@
Fix a bug that caused the tokenizer to not correctly identify mismatched
parentheses inside f-strings in some situations. Patch by Pablo Galindo

View file

@ -1238,6 +1238,9 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t
if (INSIDE_FSTRING(tok)) {
current_tok->curly_bracket_depth--;
if (current_tok->curly_bracket_depth < 0) {
return MAKE_TOKEN(_PyTokenizer_syntaxerror(tok, "f-string: unmatched '%c'", c));
}
if (c == '}' && current_tok->curly_bracket_depth == current_tok->curly_bracket_expr_start_depth) {
current_tok->curly_bracket_expr_start_depth--;
current_tok->kind = TOK_FSTRING_MODE;