with self.assertRaises(Done):
foo().send(None)
+ def test_complex_lambda(self):
+ def test1(foo, bar):
+ return ""
+
+ def test2():
+ return f"{test1(
+ foo=lambda: '、、、、、、、、、、、、、、、、、',
+ bar=lambda: 'abcdefghijklmnopqrstuvwxyz 123456789 123456789',
+ )}"
+
+ self.assertEqual(test2(), "")
+
if __name__ == '__main__':
unittest.main()
--- /dev/null
+Fix a bug that was causing ``UnicodeDecodeError`` or ``SystemError`` to be
+raised when using f-strings with ``lambda`` expressions with non-ASCII
+characters. Patch by Pablo Galindo
break;
case '}':
case '!':
- case ':':
tok_mode->last_expr_end = strlen(tok->start);
break;
+ case ':':
+ if (tok_mode->last_expr_end == -1) {
+ tok_mode->last_expr_end = strlen(tok->start);
+ }
+ break;
default:
Py_UNREACHABLE();
}