@@ -6558,27 +6558,30 @@ pattern_helper_store_name(struct compiler *c, location loc,
6558
6558
identifier n , pattern_context * pc )
6559
6559
{
6560
6560
if (n == NULL ) {
6561
- _ADDOP (c , loc , POP_TOP );
6562
- return 1 ;
6561
+ ADDOP (c , loc , POP_TOP );
6562
+ return SUCCESS ;
6563
6563
}
6564
6564
if (forbidden_name (c , loc , n , Store )) {
6565
- return 0 ;
6565
+ return ERROR ;
6566
6566
}
6567
6567
// Can't assign to the same name twice:
6568
6568
int duplicate = PySequence_Contains (pc -> stores , n );
6569
6569
if (duplicate < 0 ) {
6570
- return 0 ;
6570
+ return ERROR ;
6571
6571
}
6572
6572
if (duplicate ) {
6573
6573
compiler_error_duplicate_store (c , loc , n );
6574
- return 0 ;
6574
+ return ERROR ;
6575
6575
}
6576
6576
// Rotate this object underneath any items we need to preserve:
6577
6577
Py_ssize_t rotations = pc -> on_top + PyList_GET_SIZE (pc -> stores ) + 1 ;
6578
6578
if (pattern_helper_rotate (c , loc , rotations ) < 0 ) {
6579
- return 0 ;
6579
+ return ERROR ;
6580
+ }
6581
+ if (PyList_Append (pc -> stores , n ) < 0 ) {
6582
+ return ERROR ;
6580
6583
}
6581
- return ! PyList_Append ( pc -> stores , n ) ;
6584
+ return SUCCESS ;
6582
6585
}
6583
6586
6584
6587
@@ -6695,23 +6698,27 @@ compiler_pattern_as(struct compiler *c, pattern_ty p, pattern_context *pc)
6695
6698
const char * e = "wildcard makes remaining patterns unreachable" ;
6696
6699
return compiler_error (c , LOC (p ), e );
6697
6700
}
6698
- return pattern_helper_store_name (c , LOC (p ), p -> v .MatchAs .name , pc );
6701
+ return pattern_helper_store_name (c , LOC (p ), p -> v .MatchAs .name , pc ) == SUCCESS ? 1 : 0 ;
6699
6702
}
6700
6703
// Need to make a copy for (possibly) storing later:
6701
6704
pc -> on_top ++ ;
6702
6705
_ADDOP_I (c , LOC (p ), COPY , 1 );
6703
6706
RETURN_IF_FALSE (compiler_pattern (c , p -> v .MatchAs .pattern , pc ));
6704
6707
// Success! Store it:
6705
6708
pc -> on_top -- ;
6706
- RETURN_IF_FALSE (pattern_helper_store_name (c , LOC (p ), p -> v .MatchAs .name , pc ));
6709
+ if (pattern_helper_store_name (c , LOC (p ), p -> v .MatchAs .name , pc ) < 0 ) {
6710
+ return 0 ;
6711
+ }
6707
6712
return 1 ;
6708
6713
}
6709
6714
6710
6715
static int
6711
6716
compiler_pattern_star (struct compiler * c , pattern_ty p , pattern_context * pc )
6712
6717
{
6713
6718
assert (p -> kind == MatchStar_kind );
6714
- RETURN_IF_FALSE (pattern_helper_store_name (c , LOC (p ), p -> v .MatchStar .name , pc ));
6719
+ if (pattern_helper_store_name (c , LOC (p ), p -> v .MatchStar .name , pc ) < 0 ) {
6720
+ return 0 ;
6721
+ }
6715
6722
return 1 ;
6716
6723
}
6717
6724
@@ -6931,7 +6938,9 @@ compiler_pattern_mapping(struct compiler *c, pattern_ty p,
6931
6938
_ADDOP_I (c , LOC (p ), SWAP , 2 ); // [copy, keys..., copy, key]
6932
6939
_ADDOP (c , LOC (p ), DELETE_SUBSCR ); // [copy, keys...]
6933
6940
}
6934
- RETURN_IF_FALSE (pattern_helper_store_name (c , LOC (p ), star_target , pc ));
6941
+ if (pattern_helper_store_name (c , LOC (p ), star_target , pc ) < 0 ) {
6942
+ return 0 ;
6943
+ }
6935
6944
}
6936
6945
else {
6937
6946
_ADDOP (c , LOC (p ), POP_TOP ); // Tuple of keys.
0 commit comments