From 03fe10d91d3361144ab5c8a142daf63bc0ff143e Mon Sep 17 00:00:00 2001 From: achernyak Date: Thu, 4 May 2017 09:37:34 -0500 Subject: [PATCH] impl_parent --- src/librustc/dep_graph/dep_node.rs | 2 ++ src/librustc/middle/cstore.rs | 2 -- src/librustc/ty/maps.rs | 7 +++++++ src/librustc/ty/mod.rs | 2 +- src/librustc_metadata/cstore_impl.rs | 6 +----- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/librustc/dep_graph/dep_node.rs b/src/librustc/dep_graph/dep_node.rs index 0e462b95d82..de1531bbd54 100644 --- a/src/librustc/dep_graph/dep_node.rs +++ b/src/librustc/dep_graph/dep_node.rs @@ -156,6 +156,7 @@ pub enum DepNode { Deprecation(D), ItemBodyNestedBodies(D), ConstIsRvaluePromotableToStatic(D), + ImplParent(D), TraitOfItem(D), IsMirAvailable(D), ItemAttrs(D), @@ -272,6 +273,7 @@ pub fn map_def(&self, mut op: OP) -> Option> Deprecation(ref d) => op(d).map(Deprecation), ItemAttrs(ref d) => op(d).map(ItemAttrs), FnArgNames(ref d) => op(d).map(FnArgNames), + ImplParent(ref d) => op(d).map(ImplParent), TraitOfItem(ref d) => op(d).map(TraitOfItem), ItemBodyNestedBodies(ref d) => op(d).map(ItemBodyNestedBodies), ConstIsRvaluePromotableToStatic(ref d) => op(d).map(ConstIsRvaluePromotableToStatic), diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs index 11a2dfc6685..e50072043d5 100644 --- a/src/librustc/middle/cstore.rs +++ b/src/librustc/middle/cstore.rs @@ -188,7 +188,6 @@ pub trait CrateStore { // impl info fn impl_defaultness(&self, def: DefId) -> hir::Defaultness; - fn impl_parent(&self, impl_def_id: DefId) -> Option; // trait/impl-item info fn associated_item_cloned(&self, def: DefId) -> ty::AssociatedItem; @@ -312,7 +311,6 @@ fn implementations_of_trait(&self, filter: Option) -> Vec { vec![] // impl info fn impl_defaultness(&self, def: DefId) -> hir::Defaultness { bug!("impl_defaultness") } - fn impl_parent(&self, def: DefId) -> Option { bug!("impl_parent") } // trait/impl-item info fn associated_item_cloned(&self, def: DefId) -> ty::AssociatedItem diff --git a/src/librustc/ty/maps.rs b/src/librustc/ty/maps.rs index 5d1b16c3d2e..1dfd7bc9760 100644 --- a/src/librustc/ty/maps.rs +++ b/src/librustc/ty/maps.rs @@ -347,6 +347,12 @@ fn describe(_: TyCtxt, _: DefId) -> String { } } +impl<'tcx> QueryDescription for queries::impl_parent<'tcx> { + fn describe(_: TyCtxt, _: DefId) -> String { + bug!("impl_parent") + } +} + impl<'tcx> QueryDescription for queries::trait_of_item<'tcx> { fn describe(_: TyCtxt, _: DefId) -> String { bug!("trait_of_item") @@ -804,6 +810,7 @@ fn default() -> Self { [] deprecation: Deprecation(DefId) -> Option, [] item_attrs: ItemAttrs(DefId) -> Rc<[ast::Attribute]>, [] fn_arg_names: FnArgNames(DefId) -> Vec, + [] impl_parent: ImplParent(DefId) -> Option, [] trait_of_item: TraitOfItem(DefId) -> Option, [] item_body_nested_bodies: ItemBodyNestedBodies(DefId) -> Rc>, [] const_is_rvalue_promotable_to_static: ConstIsRvaluePromotableToStatic(DefId) -> bool, diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index 00f81c9dcf7..1c3e74d4fb9 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -2393,7 +2393,7 @@ pub fn populate_implementations_for_trait_if_necessary(self, trait_id: DefId) { let trait_ref = self.impl_trait_ref(impl_def_id).unwrap(); // Record the trait->implementation mapping. - let parent = self.sess.cstore.impl_parent(impl_def_id).unwrap_or(trait_id); + let parent = self.impl_parent(impl_def_id).unwrap_or(trait_id); def.record_remote_impl(self, impl_def_id, trait_ref, parent); } diff --git a/src/librustc_metadata/cstore_impl.rs b/src/librustc_metadata/cstore_impl.rs index b07dd1ec7b0..b54db55c0e1 100644 --- a/src/librustc_metadata/cstore_impl.rs +++ b/src/librustc_metadata/cstore_impl.rs @@ -119,6 +119,7 @@ pub fn provide<$lt>(providers: &mut Providers<$lt>) { // This is only used by rustdoc anyway, which shouldn't have // incremental recompilation ever enabled. fn_arg_names => { cdata.get_fn_arg_names(def_id.index) } + impl_parent => { cdata.get_parent_impl(def_id.index) } trait_of_item => { cdata.get_trait_of_item(def_id.index) } item_body_nested_bodies => { let map: BTreeMap<_, _> = cdata.entry(def_id.index).ast.into_iter().flat_map(|ast| { @@ -170,11 +171,6 @@ fn impl_defaultness(&self, def: DefId) -> hir::Defaultness self.get_crate_data(def.krate).get_impl_defaultness(def.index) } - fn impl_parent(&self, impl_def: DefId) -> Option { - self.dep_graph.read(DepNode::MetaData(impl_def)); - self.get_crate_data(impl_def.krate).get_parent_impl(impl_def.index) - } - fn associated_item_cloned(&self, def: DefId) -> ty::AssociatedItem { self.dep_graph.read(DepNode::MetaData(def)); -- 2.44.0