@@ -1372,6 +1372,51 @@ def unpack_sequence_list():
13721372 self .assert_specialized (unpack_sequence_list , "UNPACK_SEQUENCE_LIST" )
13731373 self .assert_no_opcode (unpack_sequence_list , "UNPACK_SEQUENCE" )
13741374
1375+ @cpython_only
1376+ @requires_specialization_ft
1377+ def test_binary_subscr (self ):
1378+ def binary_subscr_list_int ():
1379+ for _ in range (100 ):
1380+ a = [1 , 2 , 3 ]
1381+ for idx , expected in enumerate (a ):
1382+ self .assertEqual (a [idx ], expected )
1383+
1384+ binary_subscr_list_int ()
1385+ self .assert_specialized (binary_subscr_list_int ,
1386+ "BINARY_SUBSCR_LIST_INT" )
1387+ self .assert_no_opcode (binary_subscr_list_int , "BINARY_SUBSCR" )
1388+
1389+ def binary_subscr_tuple_int ():
1390+ for _ in range (100 ):
1391+ a = (1 , 2 , 3 )
1392+ for idx , expected in enumerate (a ):
1393+ self .assertEqual (a [idx ], expected )
1394+
1395+ binary_subscr_tuple_int ()
1396+ self .assert_specialized (binary_subscr_tuple_int ,
1397+ "BINARY_SUBSCR_TUPLE_INT" )
1398+ self .assert_no_opcode (binary_subscr_tuple_int , "BINARY_SUBSCR" )
1399+
1400+ def binary_subscr_dict ():
1401+ for _ in range (100 ):
1402+ a = {1 : 2 , 2 : 3 }
1403+ self .assertEqual (a [1 ], 2 )
1404+ self .assertEqual (a [2 ], 3 )
1405+
1406+ binary_subscr_dict ()
1407+ self .assert_specialized (binary_subscr_dict , "BINARY_SUBSCR_DICT" )
1408+ self .assert_no_opcode (binary_subscr_dict , "BINARY_SUBSCR" )
1409+
1410+ def binary_subscr_str_int ():
1411+ for _ in range (100 ):
1412+ a = "foobar"
1413+ for idx , expected in enumerate (a ):
1414+ self .assertEqual (a [idx ], expected )
1415+
1416+ binary_subscr_str_int ()
1417+ self .assert_specialized (binary_subscr_str_int , "BINARY_SUBSCR_STR_INT" )
1418+ self .assert_no_opcode (binary_subscr_str_int , "BINARY_SUBSCR" )
1419+
13751420
13761421if __name__ == "__main__" :
13771422 unittest .main ()
0 commit comments