]> git.lizzy.rs Git - rust.git/commitdiff
rustc: Move `impl_defaultness` to a query
authorAlex Crichton <alex@alexcrichton.com>
Mon, 28 Aug 2017 23:50:25 +0000 (16:50 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Tue, 5 Sep 2017 14:37:11 +0000 (07:37 -0700)
src/librustc/dep_graph/dep_node.rs
src/librustc/middle/cstore.rs
src/librustc/traits/util.rs
src/librustc/ty/maps.rs
src/librustc_metadata/cstore_impl.rs

index 6000740f2b010cadf76d7f273222522ffe628d7e..f7798fdad7ef5a4f773726fc24e61e8fe2084222 100644 (file)
@@ -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 {
index 163c75fe97dd6444609de867d681c8b8c877e222..8bcd76f405481cf71bce0b64c3fe44c2d8013424 100644 (file)
@@ -236,9 +236,6 @@ pub trait CrateStore {
     // trait info
     fn implementations_of_trait(&self, filter: Option<DefId>) -> Vec<DefId>;
 
-    // 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<DefId>) -> Vec<DefId> { 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") }
index 28abd1577dadea39ff7b126f582a3a0329a2a031..b0d6f4d5a31305f35a57802cf85af6bc7f07ade4 100644 (file)
@@ -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()
             }
index 20b082552d52a6fbb080f5f8ed851c6b864e9f7c..27d947654a4762e2d9902e6e0d754228157cb9d0 100644 (file)
@@ -1161,6 +1161,8 @@ fn default() -> Self {
     [] fn in_scope_traits: InScopeTraits(HirId) -> Option<Rc<Vec<TraitCandidate>>>,
     [] fn module_exports: ModuleExports(HirId) -> Option<Rc<Vec<Export>>>,
     [] fn lint_levels: lint_levels_node(CrateNum) -> Rc<lint::LintLevelMap>,
+
+    [] fn impl_defaultness: ImplDefaultness(DefId) -> hir::Defaultness,
 }
 
 fn type_param_predicates<'tcx>((item_id, param_id): (DefId, DefId)) -> DepConstructor<'tcx> {
index 76051f382cc0d42b3cdc8cc50b064d71e8f54786..8710eb2ac41e4e61b7d1d4204afb039fdb751017 100644 (file)
@@ -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<DefId>) -> Vec<DefId>
         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);