r"""b'' f''""",
])
+ def test_concat_decode_failure_does_not_crash(self):
+ script = r'''
+import builtins
+builtins.__import__ = builtins # Breaks warning machinery so _get_resized_exprs returns NULL
+try:
+ compile('"x"f"\]"b""', '<test>', 'exec')
+except Exception:
+ pass
+'''
+ assert_python_ok('-c', script)
+
def test_literal(self):
self.assertEqual(f'', '')
self.assertEqual(f'a', 'a')
_PyPegen_template_str(Parser *p, Token *a, asdl_expr_seq *raw_expressions, Token *b) {
asdl_expr_seq *resized_exprs = _get_resized_exprs(p, a, raw_expressions, b, TSTRING);
+ if (resized_exprs == NULL) {
+ return NULL;
+ }
return _PyAST_TemplateStr(resized_exprs, a->lineno, a->col_offset,
b->end_lineno, b->end_col_offset,
p->arena);
_PyPegen_joined_str(Parser *p, Token* a, asdl_expr_seq* raw_expressions, Token*b) {
asdl_expr_seq *resized_exprs = _get_resized_exprs(p, a, raw_expressions, b, FSTRING);
+ if (resized_exprs == NULL) {
+ return NULL;
+ }
return _PyAST_JoinedStr(resized_exprs, a->lineno, a->col_offset,
b->end_lineno, b->end_col_offset,
p->arena);