def impl_numba_typeref_ctor(cls): """ Defines ``Dict()``, the type-inferred version of the dictionary ctor. Parameters ---------- cls : TypeRef Expecting a TypeRef of a precise DictType. See also: `redirect_type_ctor` in numba/cpython/bulitins.py """ dict_ty = cls.instance_type if not isinstance(dict_ty, types.DictType): msg = "expecting a DictType but got {}".format(dict_ty) return # reject # Ensure the dictionary is precisely typed. if not dict_ty.is_precise(): msg = "expecting a precise DictType but got {}".format(dict_ty) raise errors.LoweringError(msg) key_type = types.TypeRef(dict_ty.key_type) value_type = types.TypeRef(dict_ty.value_type) def impl(cls): # Simply call .empty() with the key/value types from *cls* return Dict.empty(key_type, value_type) return impl
def impl_numba_typeref_ctor(cls): """ Defines ``List()``, the type-inferred version of the list ctor. Parameters ---------- cls : TypeRef Expecting a TypeRef of a precise ListType. See also: `redirect_type_ctor` in numba/cpython/bulitins.py """ list_ty = cls.instance_type if not isinstance(list_ty, types.ListType): msg = "expecting a ListType but got {}".format(list_ty) return # reject # Ensure the list is precisely typed. if not list_ty.is_precise(): msg = "expecting a precise ListType but got {}".format(list_ty) raise errors.LoweringError(msg) item_type = types.TypeRef(list_ty.item_type) def impl(cls): # Simply call .empty_list with the item types from *cls* return List.empty_list(item_type) return impl