@@ -253,7 +253,11 @@ _set_seq_context(Parser *p, asdl_expr_seq *seq, expr_context_ty ctx)
253253 }
254254 for (Py_ssize_t i = 0 ; i < len ; i ++ ) {
255255 expr_ty e = asdl_seq_GET (seq , i );
256- asdl_seq_SET (new_seq , i , _PyPegen_set_expr_context (p , e , ctx ));
256+ expr_ty new_e = _PyPegen_set_expr_context (p , e , ctx );
257+ if (!new_e ) {
258+ return NULL ;
259+ }
260+ asdl_seq_SET (new_seq , i , new_e );
257261 }
258262 return new_seq ;
259263}
@@ -267,19 +271,21 @@ _set_name_context(Parser *p, expr_ty e, expr_context_ty ctx)
267271static expr_ty
268272_set_tuple_context (Parser * p , expr_ty e , expr_context_ty ctx )
269273{
270- return _PyAST_Tuple (
271- _set_seq_context (p , e -> v .Tuple .elts , ctx ),
272- ctx ,
273- EXTRA_EXPR (e , e ));
274+ asdl_expr_seq * seq = _set_seq_context (p , e -> v .Tuple .elts , ctx );
275+ if (!seq && PyErr_Occurred ()) {
276+ return NULL ;
277+ }
278+ return _PyAST_Tuple (seq , ctx , EXTRA_EXPR (e , e ));
274279}
275280
276281static expr_ty
277282_set_list_context (Parser * p , expr_ty e , expr_context_ty ctx )
278283{
279- return _PyAST_List (
280- _set_seq_context (p , e -> v .List .elts , ctx ),
281- ctx ,
282- EXTRA_EXPR (e , e ));
284+ asdl_expr_seq * seq = _set_seq_context (p , e -> v .List .elts , ctx );
285+ if (!seq && PyErr_Occurred ()) {
286+ return NULL ;
287+ }
288+ return _PyAST_List (seq , ctx , EXTRA_EXPR (e , e ));
283289}
284290
285291static expr_ty
@@ -299,8 +305,11 @@ _set_attribute_context(Parser *p, expr_ty e, expr_context_ty ctx)
299305static expr_ty
300306_set_starred_context (Parser * p , expr_ty e , expr_context_ty ctx )
301307{
302- return _PyAST_Starred (_PyPegen_set_expr_context (p , e -> v .Starred .value , ctx ),
303- ctx , EXTRA_EXPR (e , e ));
308+ expr_ty inner = _PyPegen_set_expr_context (p , e -> v .Starred .value , ctx );
309+ if (!inner ) {
310+ return NULL ;
311+ }
312+ return _PyAST_Starred (inner , ctx , EXTRA_EXPR (e , e ));
304313}
305314
306315/* Creates an `expr_ty` equivalent to `expr` but with `ctx` as context */
@@ -1115,7 +1124,14 @@ expr_ty _PyPegen_collect_call_seqs(Parser *p, asdl_expr_seq *a, asdl_seq *b,
11151124 }
11161125
11171126 asdl_expr_seq * starreds = _PyPegen_seq_extract_starred_exprs (p , b );
1127+ if (!starreds && PyErr_Occurred ()) {
1128+ return NULL ;
1129+ }
1130+
11181131 asdl_keyword_seq * keywords = _PyPegen_seq_delete_starred_exprs (p , b );
1132+ if (!keywords && PyErr_Occurred ()) {
1133+ return NULL ;
1134+ }
11191135
11201136 if (starreds ) {
11211137 total_len += asdl_seq_LEN (starreds );
@@ -1466,6 +1482,9 @@ expr_ty _PyPegen_formatted_value(Parser *p, expr_ty expression, Token *debug, Re
14661482 end_col_offset , arena
14671483 );
14681484
1485+ if (!formatted_value ) {
1486+ return NULL ;
1487+ }
14691488 if (debug ) {
14701489 /* Find the non whitespace token after the "=" */
14711490 int debug_end_line , debug_end_offset ;
0 commit comments