From: Alex Crichton Date: Mon, 28 Aug 2017 23:50:25 +0000 (-0700) Subject: rustc: Move `impl_defaultness` to a query X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=ed6f868bf7be058921d37447225e7242855aee12;p=rust.git rustc: Move `impl_defaultness` to a query --- diff --git a/src/librustc/dep_graph/dep_node.rs b/src/librustc/dep_graph/dep_node.rs index 6000740f2b0..f7798fdad7e 100644 --- a/src/librustc/dep_graph/dep_node.rs +++ b/src/librustc/dep_graph/dep_node.rs @@ -534,6 +534,7 @@ pub fn to_dep_node(self, tcx: TyCtxt, kind: DepKind) -> DepNode { [] IsProfilerRuntime(CrateNum), [] GetPanicStrategy(CrateNum), [] IsNoBuiltins(CrateNum), + [] ImplDefaultness(DefId), ); trait DepNodeParams<'a, 'gcx: 'tcx + 'a, 'tcx: 'a> : fmt::Debug { diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs index 163c75fe97d..8bcd76f4054 100644 --- a/src/librustc/middle/cstore.rs +++ b/src/librustc/middle/cstore.rs @@ -236,9 +236,6 @@ pub trait CrateStore { // trait info fn implementations_of_trait(&self, filter: Option) -> Vec; - // impl info - fn impl_defaultness(&self, def: DefId) -> hir::Defaultness; - // trait/impl-item info fn associated_item_cloned(&self, def: DefId) -> ty::AssociatedItem; @@ -342,9 +339,6 @@ fn item_generics_cloned(&self, def: DefId) -> ty::Generics // trait info fn implementations_of_trait(&self, filter: Option) -> Vec { vec![] } - // impl info - fn impl_defaultness(&self, def: DefId) -> hir::Defaultness { bug!("impl_defaultness") } - // trait/impl-item info fn associated_item_cloned(&self, def: DefId) -> ty::AssociatedItem { bug!("associated_item_cloned") } diff --git a/src/librustc/traits/util.rs b/src/librustc/traits/util.rs index 28abd1577da..b0d6f4d5a31 100644 --- a/src/librustc/traits/util.rs +++ b/src/librustc/traits/util.rs @@ -538,8 +538,6 @@ pub fn impl_is_default(self, node_item_def_id: DefId) -> bool { } None => { self.global_tcx() - .sess - .cstore .impl_defaultness(node_item_def_id) .is_default() } diff --git a/src/librustc/ty/maps.rs b/src/librustc/ty/maps.rs index 20b082552d5..27d947654a4 100644 --- a/src/librustc/ty/maps.rs +++ b/src/librustc/ty/maps.rs @@ -1161,6 +1161,8 @@ fn default() -> Self { [] fn in_scope_traits: InScopeTraits(HirId) -> Option>>, [] fn module_exports: ModuleExports(HirId) -> Option>>, [] fn lint_levels: lint_levels_node(CrateNum) -> Rc, + + [] fn impl_defaultness: ImplDefaultness(DefId) -> hir::Defaultness, } fn type_param_predicates<'tcx>((item_id, param_id): (DefId, DefId)) -> DepConstructor<'tcx> { diff --git a/src/librustc_metadata/cstore_impl.rs b/src/librustc_metadata/cstore_impl.rs index 76051f382cc..8710eb2ac41 100644 --- a/src/librustc_metadata/cstore_impl.rs +++ b/src/librustc_metadata/cstore_impl.rs @@ -162,6 +162,7 @@ fn into_def_id(self) -> DefId { self.as_def_id() } panic_strategy => { cdata.panic_strategy(&tcx.dep_graph) } extern_crate => { Rc::new(cdata.extern_crate.get()) } is_no_builtins => { cdata.is_no_builtins(&tcx.dep_graph) } + impl_defaultness => { cdata.get_impl_defaultness(def_id.index) } } pub fn provide_local<'tcx>(providers: &mut Providers<'tcx>) { @@ -211,12 +212,6 @@ fn implementations_of_trait(&self, filter: Option) -> Vec result } - fn impl_defaultness(&self, def: DefId) -> hir::Defaultness - { - self.read_dep_node(def); - self.get_crate_data(def.krate).get_impl_defaultness(def.index) - } - fn associated_item_cloned(&self, def: DefId) -> ty::AssociatedItem { self.read_dep_node(def);