5656from mypyc .ir .rtypes import (
5757 RInstance ,
5858 bool_rprimitive ,
59- dict_rprimitive ,
6059 int_rprimitive ,
6160 object_rprimitive ,
61+ true_dict_rprimitive ,
6262)
6363from mypyc .irbuild .builder import IRBuilder , calculate_arg_defaults , gen_arg_defaults
6464from mypyc .irbuild .callable_class import (
7676)
7777from mypyc .irbuild .generator import gen_generator_func , gen_generator_func_body
7878from mypyc .irbuild .targets import AssignmentTarget
79- from mypyc .primitives .dict_ops import dict_get_method_with_none , dict_new_op , dict_set_item_op
79+ from mypyc .primitives .dict_ops import (
80+ dict_new_op ,
81+ true_dict_get_method_with_none ,
82+ true_dict_set_item_op ,
83+ )
8084from mypyc .primitives .generic_ops import py_setattr_op
8185from mypyc .primitives .misc_ops import register_function
8286from mypyc .primitives .registry import builtin_names
@@ -124,7 +128,7 @@ def transform_decorator(builder: IRBuilder, dec: Decorator) -> None:
124128 if decorated_func is not None :
125129 # Set the callable object representing the decorated function as a global.
126130 builder .primitive_op (
127- dict_set_item_op ,
131+ true_dict_set_item_op ,
128132 [builder .load_globals_dict (), builder .load_str (dec .func .name ), decorated_func ],
129133 decorated_func .line ,
130134 )
@@ -797,10 +801,12 @@ def generate_singledispatch_dispatch_function(
797801
798802 arg_type = builder .builder .get_type_of_obj (arg_info .args [0 ], line )
799803 dispatch_cache = builder .builder .get_attr (
800- dispatch_func_obj , "dispatch_cache" , dict_rprimitive , line
804+ dispatch_func_obj , "dispatch_cache" , true_dict_rprimitive , line
801805 )
802806 call_find_impl , use_cache , call_func = BasicBlock (), BasicBlock (), BasicBlock ()
803- get_result = builder .primitive_op (dict_get_method_with_none , [dispatch_cache , arg_type ], line )
807+ get_result = builder .primitive_op (
808+ true_dict_get_method_with_none , [dispatch_cache , arg_type ], line
809+ )
804810 is_not_none = builder .translate_is_op (get_result , builder .none_object (), "is not" , line )
805811 impl_to_use = Register (object_rprimitive )
806812 builder .add_bool_branch (is_not_none , use_cache , call_find_impl )
@@ -813,7 +819,7 @@ def generate_singledispatch_dispatch_function(
813819 find_impl = builder .load_module_attr_by_fullname ("functools._find_impl" , line )
814820 registry = load_singledispatch_registry (builder , dispatch_func_obj , line )
815821 uncached_impl = builder .py_call (find_impl , [arg_type , registry ], line )
816- builder .primitive_op (dict_set_item_op , [dispatch_cache , arg_type , uncached_impl ], line )
822+ builder .primitive_op (true_dict_set_item_op , [dispatch_cache , arg_type , uncached_impl ], line )
817823 builder .assign (impl_to_use , uncached_impl , line )
818824 builder .goto (call_func )
819825
@@ -877,8 +883,8 @@ def gen_dispatch_func_ir(
877883 """
878884 builder .enter (FuncInfo (fitem , dispatch_name ))
879885 setup_callable_class (builder )
880- builder .fn_info .callable_class .ir .attributes ["registry" ] = dict_rprimitive
881- builder .fn_info .callable_class .ir .attributes ["dispatch_cache" ] = dict_rprimitive
886+ builder .fn_info .callable_class .ir .attributes ["registry" ] = true_dict_rprimitive
887+ builder .fn_info .callable_class .ir .attributes ["dispatch_cache" ] = true_dict_rprimitive
882888 builder .fn_info .callable_class .ir .has_dict = True
883889 builder .fn_info .callable_class .ir .needs_getseters = True
884890 generate_singledispatch_callable_class_ctor (builder )
@@ -941,7 +947,7 @@ def add_register_method_to_callable_class(builder: IRBuilder, fn_info: FuncInfo)
941947
942948
943949def load_singledispatch_registry (builder : IRBuilder , dispatch_func_obj : Value , line : int ) -> Value :
944- return builder .builder .get_attr (dispatch_func_obj , "registry" , dict_rprimitive , line )
950+ return builder .builder .get_attr (dispatch_func_obj , "registry" , true_dict_rprimitive , line )
945951
946952
947953def singledispatch_main_func_name (orig_name : str ) -> str :
@@ -990,9 +996,9 @@ def maybe_insert_into_registry_dict(builder: IRBuilder, fitem: FuncDef) -> None:
990996 registry = load_singledispatch_registry (builder , dispatch_func_obj , line )
991997 for typ in types :
992998 loaded_type = load_type (builder , typ , None , line )
993- builder .primitive_op (dict_set_item_op , [registry , loaded_type , to_insert ], line )
999+ builder .primitive_op (true_dict_set_item_op , [registry , loaded_type , to_insert ], line )
9941000 dispatch_cache = builder .builder .get_attr (
995- dispatch_func_obj , "dispatch_cache" , dict_rprimitive , line
1001+ dispatch_func_obj , "dispatch_cache" , true_dict_rprimitive , line
9961002 )
9971003 builder .gen_method_call (dispatch_cache , "clear" , [], None , line )
9981004
0 commit comments