@@ -1548,6 +1548,27 @@ def contains_op_dict():
15481548 self .assert_specialized (contains_op_dict , "CONTAINS_OP_DICT" )
15491549 self .assert_no_opcode (contains_op_dict , "CONTAINS_OP" )
15501550
1551+ def contains_op_frozen_dict ():
1552+ for _ in range (_testinternalcapi .SPECIALIZATION_THRESHOLD ):
1553+ a , b = 1 , frozendict ({1 : 2 , 2 : 5 })
1554+ self .assertTrue (a in b )
1555+ self .assertFalse (3 in b )
1556+
1557+ contains_op_frozen_dict ()
1558+ self .assert_specialized (contains_op_frozen_dict , "CONTAINS_OP_DICT" )
1559+ self .assert_no_opcode (contains_op_frozen_dict , "CONTAINS_OP" )
1560+
1561+ def contains_op_frozen_dict_subclass ():
1562+ class MyFrozenDict (frozendict ):
1563+ pass
1564+ for _ in range (_testinternalcapi .SPECIALIZATION_THRESHOLD ):
1565+ a , b = 1 , MyFrozenDict ({1 : 2 , 2 : 5 })
1566+ self .assertTrue (a in b )
1567+ self .assertFalse (3 in b )
1568+
1569+ contains_op_frozen_dict_subclass ()
1570+ self .assert_no_opcode (contains_op_frozen_dict_subclass , "CONTAINS_OP_DICT" )
1571+
15511572 def contains_op_set ():
15521573 for _ in range (_testinternalcapi .SPECIALIZATION_THRESHOLD ):
15531574 a , b = 1 , {1 , 2 }
@@ -1808,6 +1829,27 @@ def binary_subscr_dict():
18081829 self .assert_specialized (binary_subscr_dict , "BINARY_OP_SUBSCR_DICT" )
18091830 self .assert_no_opcode (binary_subscr_dict , "BINARY_OP" )
18101831
1832+ def binary_subscr_frozen_dict ():
1833+ for _ in range (_testinternalcapi .SPECIALIZATION_THRESHOLD ):
1834+ a = frozendict ({1 : 2 , 2 : 3 })
1835+ self .assertEqual (a [1 ], 2 )
1836+ self .assertEqual (a [2 ], 3 )
1837+
1838+ binary_subscr_frozen_dict ()
1839+ self .assert_specialized (binary_subscr_frozen_dict , "BINARY_OP_SUBSCR_DICT" )
1840+ self .assert_no_opcode (binary_subscr_frozen_dict , "BINARY_OP" )
1841+
1842+ def binary_subscr_frozen_dict_subclass ():
1843+ class MyFrozenDict (frozendict ):
1844+ pass
1845+ for _ in range (_testinternalcapi .SPECIALIZATION_THRESHOLD ):
1846+ a = MyFrozenDict ({1 : 2 , 2 : 3 })
1847+ self .assertEqual (a [1 ], 2 )
1848+ self .assertEqual (a [2 ], 3 )
1849+
1850+ binary_subscr_frozen_dict_subclass ()
1851+ self .assert_no_opcode (binary_subscr_frozen_dict_subclass , "BINARY_OP_SUBSCR_DICT" )
1852+
18111853 def binary_subscr_str_int ():
18121854 for _ in range (_testinternalcapi .SPECIALIZATION_THRESHOLD ):
18131855 a = "foobar"
0 commit comments