https://github.com/python/cpython/commit/3003fbbf00422bce6e327646063e97470afa9091
commit: 3003fbbf00422bce6e327646063e97470afa9091
branch: main
author: Pablo Galindo Salgado <[email protected]>
committer: pablogsal <[email protected]>
date: 2024-01-05T12:16:46Z
summary:
gh-113703: Correctly identify incomplete f-strings in the codeop module
(#113709)
files:
A Misc/NEWS.d/next/Core and
Builtins/2024-01-04-17-15-30.gh-issue-113703.Zsk0pY.rst
M Lib/test/test_codeop.py
M Parser/lexer/lexer.c
diff --git a/Lib/test/test_codeop.py b/Lib/test/test_codeop.py
index 2abb6c6d935b7e..787bd1b6a79e20 100644
--- a/Lib/test/test_codeop.py
+++ b/Lib/test/test_codeop.py
@@ -223,6 +223,9 @@ def test_incomplete(self):
ai("(x for x in")
ai("(x for x in (")
+ ai('a = f"""')
+ ai('a = \\')
+
def test_invalid(self):
ai = self.assertInvalid
ai("a b")
diff --git a/Misc/NEWS.d/next/Core and
Builtins/2024-01-04-17-15-30.gh-issue-113703.Zsk0pY.rst b/Misc/NEWS.d/next/Core
and Builtins/2024-01-04-17-15-30.gh-issue-113703.Zsk0pY.rst
new file mode 100644
index 00000000000000..5db93e344724fb
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and
Builtins/2024-01-04-17-15-30.gh-issue-113703.Zsk0pY.rst
@@ -0,0 +1,2 @@
+Fix a regression in the :mod:`codeop` module that was causing it to incorrectly
+identify incomplete f-strings. Patch by Pablo Galindo
diff --git a/Parser/lexer/lexer.c b/Parser/lexer/lexer.c
index ea4bdf7ce4a24c..ebf7686773ff45 100644
--- a/Parser/lexer/lexer.c
+++ b/Parser/lexer/lexer.c
@@ -1355,9 +1355,13 @@ tok_get_fstring_mode(struct tok_state *tok,
tokenizer_mode* current_tok, struct
tok->lineno = the_current_tok->f_string_line_start;
if (current_tok->f_string_quote_size == 3) {
- return MAKE_TOKEN(_PyTokenizer_syntaxerror(tok,
+ _PyTokenizer_syntaxerror(tok,
"unterminated triple-quoted f-string
literal"
- " (detected at line %d)", start));
+ " (detected at line %d)", start);
+ if (c != '\n') {
+ tok->done = E_EOFS;
+ }
+ return MAKE_TOKEN(ERRORTOKEN);
}
else {
return MAKE_TOKEN(_PyTokenizer_syntaxerror(tok,
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]