]> git.lizzy.rs Git - rust.git/commitdiff
rustc: Move crate_disambiguator to queries
authorAlex Crichton <alex@alexcrichton.com>
Tue, 29 Aug 2017 00:30:27 +0000 (17:30 -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/ty/context.rs
src/librustc/ty/maps.rs
src/librustc/ty/mod.rs
src/librustc_metadata/cstore_impl.rs

index 76f31eb5596e2a26e2d636d616c5ef3f6e0fd490..e397ecbed799d3c84ab70b82b1b2ef942361de83 100644 (file)
@@ -539,6 +539,7 @@ pub fn to_dep_node(self, tcx: TyCtxt, kind: DepKind) -> DepNode {
     [] NativeLibraries(CrateNum),
     [] PluginRegistrarFn(CrateNum),
     [] DeriveRegistrarFn(CrateNum),
+    [] CrateDisambiguator(CrateNum),
 );
 
 trait DepNodeParams<'a, 'gcx: 'tcx + 'a, 'tcx: 'a> : fmt::Debug {
index 9294530f5152ef994367c767d2d99e8454c1bb14..1f05edb86dc5d5ba85eaf35031db0c181b8e98de 100644 (file)
@@ -254,7 +254,6 @@ pub trait CrateStore {
     /// The name of the crate as it is stored in the crate's metadata.
     fn original_crate_name(&self, cnum: CrateNum) -> Symbol;
     fn crate_hash(&self, cnum: CrateNum) -> Svh;
-    fn crate_disambiguator(&self, cnum: CrateNum) -> Symbol;
 
     // resolve
     fn def_key(&self, def: DefId) -> DefKey;
@@ -355,8 +354,6 @@ fn original_crate_name(&self, cnum: CrateNum) -> Symbol {
         bug!("original_crate_name")
     }
     fn crate_hash(&self, cnum: CrateNum) -> Svh { bug!("crate_hash") }
-    fn crate_disambiguator(&self, cnum: CrateNum)
-                           -> Symbol { bug!("crate_disambiguator") }
 
     // resolve
     fn def_key(&self, def: DefId) -> DefKey { bug!("def_key") }
index f475baf19949f02896a862de54ae2dc137ba2c19..d5274f47e4af02f16cef4f205f7215881b3b0140 100644 (file)
@@ -925,14 +925,6 @@ pub fn original_crate_name(self, cnum: CrateNum) -> Symbol {
         }
     }
 
-    pub fn crate_disambiguator(self, cnum: CrateNum) -> Symbol {
-        if cnum == LOCAL_CRATE {
-            self.sess.local_crate_disambiguator()
-        } else {
-            self.sess.cstore.crate_disambiguator(cnum)
-        }
-    }
-
     pub fn alloc_generics(self, generics: ty::Generics) -> &'gcx ty::Generics {
         self.global_arenas.generics.alloc(generics)
     }
index 31a1f9aee4e3d35525b6d7e3c31d323720966393..edfe806e613364f0dd2cfcb5c23f9e8ad753db42 100644 (file)
@@ -611,6 +611,12 @@ fn describe(_tcx: TyCtxt, _: CrateNum) -> String {
     }
 }
 
+impl<'tcx> QueryDescription for queries::crate_disambiguator<'tcx> {
+    fn describe(_tcx: TyCtxt, _: CrateNum) -> String {
+        format!("looking up the disambiguator a crate")
+    }
+}
+
 // If enabled, send a message to the profile-queries thread
 macro_rules! profq_msg {
     ($tcx:expr, $msg:expr) => {
@@ -1191,6 +1197,7 @@ fn default() -> Self {
     [] fn native_libraries: NativeLibraries(CrateNum) -> Rc<Vec<NativeLibrary>>,
     [] fn plugin_registrar_fn: PluginRegistrarFn(CrateNum) -> Option<DefId>,
     [] fn derive_registrar_fn: DeriveRegistrarFn(CrateNum) -> Option<DefId>,
+    [] fn crate_disambiguator: CrateDisambiguator(CrateNum) -> Symbol,
 }
 
 fn type_param_predicates<'tcx>((item_id, param_id): (DefId, DefId)) -> DepConstructor<'tcx> {
index 1851e1b8d34bbe595469f394cfe04c43104ddd9b..cce07ffefe597762c083eb0a8c461345fcb5cb74 100644 (file)
@@ -2510,6 +2510,12 @@ fn param_env<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
     traits::normalize_param_env_or_error(tcx, def_id, unnormalized_env, cause)
 }
 
+fn crate_disambiguator<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
+                                 crate_num: CrateNum) -> Symbol {
+    assert_eq!(crate_num, LOCAL_CRATE);
+    tcx.sess.local_crate_disambiguator()
+}
+
 pub fn provide(providers: &mut ty::maps::Providers) {
     util::provide(providers);
     context::provide(providers);
@@ -2521,6 +2527,7 @@ pub fn provide(providers: &mut ty::maps::Providers) {
         def_span,
         param_env,
         trait_of_item,
+        crate_disambiguator,
         trait_impls_of: trait_def::trait_impls_of_provider,
         ..*providers
     };
index 842335212eed60e216e3d364ae4c4590cecebedb..3917318f67cac75684d60f0755e0f605c67515f0 100644 (file)
@@ -175,6 +175,9 @@ fn into_def_id(self) -> DefId { self.as_def_id() }
             DefId { krate: def_id.krate, index }
         })
     }
+    crate_disambiguator => { cdata.disambiguator() }
+    crate_hash => { cdata.hash() }
+    original_crate_name => { cdata.name() }
 }
 
 pub fn provide_local<'tcx>(providers: &mut Providers<'tcx>) {
@@ -288,11 +291,6 @@ fn crate_hash(&self, cnum: CrateNum) -> Svh
         self.get_crate_hash(cnum)
     }
 
-    fn crate_disambiguator(&self, cnum: CrateNum) -> Symbol
-    {
-        self.get_crate_data(cnum).disambiguator()
-    }
-
     /// Returns the `DefKey` for a given `DefId`. This indicates the
     /// parent `DefId` as well as some idea of what kind of data the
     /// `DefId` refers to.