mirror of https://github.com/python/cpython
bpo-42986: Fix parser crash when reporting syntax errors in f-string with newlines (GH-24279)
This commit is contained in:
parent
a1e9a1e120
commit
4090151816
|
@ -664,6 +664,9 @@ x = (
|
|||
self.assertAllRaise(SyntaxError, 'unterminated string literal',
|
||||
["f'{\n}'",
|
||||
])
|
||||
def test_newlines_before_syntax_error(self):
|
||||
self.assertAllRaise(SyntaxError, "invalid syntax",
|
||||
["f'{.}'", "\nf'{.}'", "\n\nf'{.}'"])
|
||||
|
||||
def test_backslashes_in_string_part(self):
|
||||
self.assertEqual(f'\t', '\t')
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fix parser crash when reporting syntax errors in f-string with newlines.
|
||||
Patch by Pablo Galindo.
|
|
@ -454,7 +454,7 @@ _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype,
|
|||
does not physically exist */
|
||||
assert(p->tok->fp == NULL || p->tok->fp == stdin || p->tok->done == E_EOF);
|
||||
|
||||
if (p->tok->lineno == lineno) {
|
||||
if (p->tok->lineno <= lineno) {
|
||||
Py_ssize_t size = p->tok->inp - p->tok->buf;
|
||||
error_line = PyUnicode_DecodeUTF8(p->tok->buf, size, "replace");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue