@@ -540,84 +540,72 @@ def test_folding_unaryop(self):
540540 self .check_lnotab (code )
541541
542542 def test_folding_binop (self ):
543- add = get_binop_argval ('NB_ADD' )
544- sub = get_binop_argval ('NB_SUBTRACT' )
545- mul = get_binop_argval ('NB_MULTIPLY' )
546- div = get_binop_argval ('NB_TRUE_DIVIDE' )
547- floor = get_binop_argval ('NB_FLOOR_DIVIDE' )
548- rem = get_binop_argval ('NB_REMAINDER' )
549- pow = get_binop_argval ('NB_POWER' )
550- lshift = get_binop_argval ('NB_LSHIFT' )
551- rshift = get_binop_argval ('NB_RSHIFT' )
552- or_ = get_binop_argval ('NB_OR' )
553- and_ = get_binop_argval ('NB_AND' )
554- xor = get_binop_argval ('NB_XOR' )
555- subscr = get_binop_argval ('NB_SUBSCR' )
556543 tests = [
557- ('1 + 2' , False , add ),
558- ('1 + 2 + 3' , False , add ),
559- ('1 + ""' , True , add ),
560- ('1 - 2' , False , sub ),
561- ('1 - 2 - 3' , False , sub ),
562- ('1 - ""' , True , sub ),
563- ('2 * 2' , False , mul ),
564- ('2 * 2 * 2' , False , mul ),
565- ('2 / 2' , False , div ),
566- ('2 / 2 / 2' , False , div ),
567- ('2 / ""' , True , div ),
568- ('2 // 2' , False , floor ),
569- ('2 // 2 // 2' , False , floor ),
570- ('2 // ""' , True , floor ),
571- ('2 % 2' , False , rem ),
572- ('2 % 2 % 2' , False , rem ),
573- ('2 % ()' , True , rem ),
574- ('2 ** 2' , False , pow ),
575- ('2 ** 2 ** 2' , False , pow ),
576- ('2 ** ""' , True , pow ),
577- ('2 << 2' , False , lshift ),
578- ('2 << 2 << 2' , False , lshift ),
579- ('2 << ""' , True , lshift ),
580- ('2 >> 2' , False , rshift ),
581- ('2 >> 2 >> 2' , False , rshift ),
582- ('2 >> ""' , True , rshift ),
583- ('2 | 2' , False , or_ ),
584- ('2 | 2 | 2' , False , or_ ),
585- ('2 | ""' , True , or_ ),
586- ('2 & 2' , False , and_ ),
587- ('2 & 2 & 2' , False , and_ ),
588- ('2 & ""' , True , and_ ),
589- ('2 ^ 2' , False , xor ),
590- ('2 ^ 2 ^ 2' , False , xor ),
591- ('2 ^ ""' , True , xor ),
592- ('(1, )[0]' , False , subscr ),
593- ('(1, )[-1]' , False , subscr ),
594- ('(1 + 2, )[0]' , False , subscr ),
595- ('(1, (1, 2))[1][1]' , False , subscr ),
596- ('(1, 2)[2-1]' , False , subscr ),
597- ('(1, (1, 2))[1][2-1]' , False , subscr ),
598- ('(1, (1, 2))[1:6][0][2-1]' , False , subscr ),
599- ('"a"[0]' , False , subscr ),
600- ('("a" + "b")[1]' , False , subscr ),
601- ('("a" + "b", )[0][1]' , False , subscr ),
602- ('("a" * 10)[9]' , False , subscr ),
603- ('(1, )[1]' , True , subscr ),
604- ('(1, )[-2]' , True , subscr ),
605- ('"a"[1]' , True , subscr ),
606- ('"a"[-2]' , True , subscr ),
607- ('("a" + "b")[2]' , True , subscr ),
608- ('("a" + "b", )[0][2]' , True , subscr ),
609- ('("a" + "b", )[1][0]' , True , subscr ),
610- ('("a" * 10)[10]' , True , subscr ),
611- ('(1, (1, 2))[2:6][0][2-1]' , True , subscr ),
544+ ('1 + 2' , False , 'NB_ADD' ),
545+ ('1 + 2 + 3' , False , 'NB_ADD' ),
546+ ('1 + ""' , True , 'NB_ADD' ),
547+ ('1 - 2' , False , 'NB_SUBTRACT' ),
548+ ('1 - 2 - 3' , False , 'NB_SUBTRACT' ),
549+ ('1 - ""' , True , 'NB_SUBTRACT' ),
550+ ('2 * 2' , False , 'NB_MULTIPLY' ),
551+ ('2 * 2 * 2' , False , 'NB_MULTIPLY' ),
552+ ('2 / 2' , False , 'NB_TRUE_DIVIDE' ),
553+ ('2 / 2 / 2' , False , 'NB_TRUE_DIVIDE' ),
554+ ('2 / ""' , True , 'NB_TRUE_DIVIDE' ),
555+ ('2 // 2' , False , 'NB_FLOOR_DIVIDE' ),
556+ ('2 // 2 // 2' , False , 'NB_FLOOR_DIVIDE' ),
557+ ('2 // ""' , True , 'NB_FLOOR_DIVIDE' ),
558+ ('2 % 2' , False , 'NB_REMAINDER' ),
559+ ('2 % 2 % 2' , False , 'NB_REMAINDER' ),
560+ ('2 % ()' , True , 'NB_REMAINDER' ),
561+ ('2 ** 2' , False , 'NB_POWER' ),
562+ ('2 ** 2 ** 2' , False , 'NB_POWER' ),
563+ ('2 ** ""' , True , 'NB_POWER' ),
564+ ('2 << 2' , False , 'NB_LSHIFT' ),
565+ ('2 << 2 << 2' , False , 'NB_LSHIFT' ),
566+ ('2 << ""' , True , 'NB_LSHIFT' ),
567+ ('2 >> 2' , False , 'NB_RSHIFT' ),
568+ ('2 >> 2 >> 2' , False , 'NB_RSHIFT' ),
569+ ('2 >> ""' , True , 'NB_RSHIFT' ),
570+ ('2 | 2' , False , 'NB_OR' ),
571+ ('2 | 2 | 2' , False , 'NB_OR' ),
572+ ('2 | ""' , True , 'NB_OR' ),
573+ ('2 & 2' , False , 'NB_AND' ),
574+ ('2 & 2 & 2' , False , 'NB_AND' ),
575+ ('2 & ""' , True , 'NB_AND' ),
576+ ('2 ^ 2' , False , 'NB_XOR' ),
577+ ('2 ^ 2 ^ 2' , False , 'NB_XOR' ),
578+ ('2 ^ ""' , True , 'NB_XOR' ),
579+ ('(1, )[0]' , False , 'NB_SUBSCR' ),
580+ ('(1, )[-1]' , False , 'NB_SUBSCR' ),
581+ ('(1 + 2, )[0]' , False , 'NB_SUBSCR' ),
582+ ('(1, (1, 2))[1][1]' , False , 'NB_SUBSCR' ),
583+ ('(1, 2)[2-1]' , False , 'NB_SUBSCR' ),
584+ ('(1, (1, 2))[1][2-1]' , False , 'NB_SUBSCR' ),
585+ ('(1, (1, 2))[1:6][0][2-1]' , False , 'NB_SUBSCR' ),
586+ ('"a"[0]' , False , 'NB_SUBSCR' ),
587+ ('("a" + "b")[1]' , False , 'NB_SUBSCR' ),
588+ ('("a" + "b", )[0][1]' , False , 'NB_SUBSCR' ),
589+ ('("a" * 10)[9]' , False , 'NB_SUBSCR' ),
590+ ('(1, )[1]' , True , 'NB_SUBSCR' ),
591+ ('(1, )[-2]' , True , 'NB_SUBSCR' ),
592+ ('"a"[1]' , True , 'NB_SUBSCR' ),
593+ ('"a"[-2]' , True , 'NB_SUBSCR' ),
594+ ('("a" + "b")[2]' , True , 'NB_SUBSCR' ),
595+ ('("a" + "b", )[0][2]' , True , 'NB_SUBSCR' ),
596+ ('("a" + "b", )[1][0]' , True , 'NB_SUBSCR' ),
597+ ('("a" * 10)[10]' , True , 'NB_SUBSCR' ),
598+ ('(1, (1, 2))[2:6][0][2-1]' , True , 'NB_SUBSCR' ),
612599
613600 ]
614601 for expr , has_error , nb_op in tests :
615602 with self .subTest (expr = expr , has_error = has_error ):
616603 code = compile (expr , '' , 'single' )
604+ nb_op_val = get_binop_argval (nb_op )
617605 if not has_error :
618- self .assertNotInBytecode (code , 'BINARY_OP' , argval = nb_op )
606+ self .assertNotInBytecode (code , 'BINARY_OP' , argval = nb_op_val )
619607 else :
620- self .assertInBytecode (code , 'BINARY_OP' , argval = nb_op )
608+ self .assertInBytecode (code , 'BINARY_OP' , argval = nb_op_val )
621609 self .check_lnotab (code )
622610
623611 def test_constant_folding_remove_nop_location (self ):
@@ -1258,7 +1246,7 @@ def f():
12581246 }
12591247 self .assertEqual (f (), frozenset (range (40 )))
12601248
1261- def test_multiple_foldings (self ):
1249+ def test_nested_const_foldings (self ):
12621250 # (1, (--2 + ++2 * 2 // 2 - 2, )[0], ~~3, not not True) ==> (1, 2, 3, True)
12631251 intrinsic_positive = 5
12641252 before = [
0 commit comments