Struct rustc_typeck::middle::ty::ctxtExperimental
[-]
[+]
[src]
pub struct ctxt<'tcx> {
pub types: CommonTypes<'tcx>,
pub sess: Session,
pub def_map: RefCell<HashMap<u32, Def, FnvHasher>>,
pub named_region_map: HashMap<u32, DefRegion, FnvHasher>,
pub region_maps: RegionMaps,
pub node_types: RefCell<HashMap<u32, &'tcx TyS<'tcx>, FnvHasher>>,
pub item_substs: RefCell<HashMap<u32, ItemSubsts<'tcx>, FnvHasher>>,
pub impl_or_trait_items: RefCell<HashMap<DefId, ImplOrTraitItem<'tcx>, FnvHasher>>,
pub trait_item_def_ids: RefCell<HashMap<DefId, Rc<Vec<ImplOrTraitItemId>>, FnvHasher>>,
pub trait_items_cache: RefCell<HashMap<DefId, Rc<Vec<ImplOrTraitItem<'tcx>>>, FnvHasher>>,
pub impl_trait_cache: RefCell<HashMap<DefId, Option<Rc<TraitRef<'tcx>>>, FnvHasher>>,
pub trait_refs: RefCell<HashMap<u32, Rc<TraitRef<'tcx>>, FnvHasher>>,
pub trait_defs: RefCell<HashMap<DefId, Rc<TraitDef<'tcx>>, FnvHasher>>,
pub object_cast_map: RefCell<HashMap<u32, Binder<Rc<TraitRef<'tcx>>>, FnvHasher>>,
pub map: Map<'tcx>,
pub intrinsic_defs: RefCell<HashMap<DefId, &'tcx TyS<'tcx>, FnvHasher>>,
pub freevars: RefCell<HashMap<u32, Vec<Freevar>, FnvHasher>>,
pub tcache: RefCell<HashMap<DefId, TypeScheme<'tcx>, FnvHasher>>,
pub rcache: RefCell<HashMap<creader_cache_key, &'tcx TyS<'tcx>, FnvHasher>>,
pub short_names_cache: RefCell<HashMap<&'tcx TyS<'tcx>, String, FnvHasher>>,
pub tc_cache: RefCell<HashMap<&'tcx TyS<'tcx>, TypeContents, FnvHasher>>,
pub ast_ty_to_ty_cache: RefCell<HashMap<u32, ast_ty_to_ty_cache_entry<'tcx>, FnvHasher>>,
pub enum_var_cache: RefCell<HashMap<DefId, Rc<Vec<Rc<VariantInfo<'tcx>>>>, FnvHasher>>,
pub ty_param_defs: RefCell<HashMap<u32, TypeParameterDef<'tcx>, FnvHasher>>,
pub adjustments: RefCell<HashMap<u32, AutoAdjustment<'tcx>, FnvHasher>>,
pub normalized_cache: RefCell<HashMap<&'tcx TyS<'tcx>, &'tcx TyS<'tcx>, FnvHasher>>,
pub lang_items: LanguageItems,
pub provided_method_sources: RefCell<HashMap<DefId, DefId, FnvHasher>>,
pub struct_fields: RefCell<HashMap<DefId, Rc<Vec<field_ty>>, FnvHasher>>,
pub item_variance_map: RefCell<HashMap<DefId, Rc<ItemVariances>, FnvHasher>>,
pub variance_computed: Cell<bool>,
pub destructor_for_type: RefCell<HashMap<DefId, DefId, FnvHasher>>,
pub destructors: RefCell<HashSet<DefId, FnvHasher>>,
pub trait_impls: RefCell<HashMap<DefId, Rc<RefCell<Vec<DefId>>>, FnvHasher>>,
pub inherent_impls: RefCell<HashMap<DefId, Rc<Vec<DefId>>, FnvHasher>>,
pub impl_items: RefCell<HashMap<DefId, Vec<ImplOrTraitItemId>, FnvHasher>>,
pub used_unsafe: RefCell<HashSet<u32, FnvHasher>>,
pub used_mut_nodes: RefCell<HashSet<u32, FnvHasher>>,
pub populated_external_types: RefCell<HashSet<DefId, FnvHasher>>,
pub populated_external_traits: RefCell<HashSet<DefId, FnvHasher>>,
pub upvar_borrow_map: RefCell<HashMap<UpvarId, UpvarBorrow, FnvHasher>>,
pub extern_const_statics: RefCell<HashMap<DefId, u32, FnvHasher>>,
pub extern_const_variants: RefCell<HashMap<DefId, u32, FnvHasher>>,
pub method_map: RefCell<HashMap<MethodCall, MethodCallee<'tcx>, FnvHasher>>,
pub dependency_formats: RefCell<HashMap<CrateType, Vec<Option<LinkagePreference>>, FnvHasher>>,
pub unboxed_closures: RefCell<HashMap<DefId, UnboxedClosure<'tcx>, FnvHasher>>,
pub node_lint_levels: RefCell<HashMap<(u32, LintId), (Level, LintSource), FnvHasher>>,
pub transmute_restrictions: RefCell<Vec<TransmuteRestriction<'tcx>>>,
pub stability: RefCell<Index>,
pub capture_modes: RefCell<HashMap<u32, CaptureClause, FnvHasher>>,
pub associated_types: RefCell<HashMap<DefId, bool, FnvHasher>>,
pub selection_cache: SelectionCache<'tcx>,
pub repr_hint_cache: RefCell<HashMap<DefId, Rc<Vec<ReprAttr>>, FnvHasher>>,
pub type_impls_copy_cache: RefCell<HashMap<&'tcx TyS<'tcx>, bool, RandomSipHasher>>,
pub type_impls_sized_cache: RefCell<HashMap<&'tcx TyS<'tcx>, bool, RandomSipHasher>>,
// some fields omitted
}The data structure to keep track of all the information that typechecker generates so that so that it can be reused and doesn't have to be redone later on.