summary refs log tree commit diff
path: root/compiler/rustc_metadata/src/rmeta/decoder
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2021-07-10 23:34:41 +0200
committerCamille GILLOT <gillot.camille@gmail.com>2021-07-17 19:35:33 +0200
commit6e78d6c9d697217998322ab626cbeee24cdfe228 (patch)
tree0f6242e82240bc69adb48880344da2fcd555c5ab /compiler/rustc_metadata/src/rmeta/decoder
parentc2d43e132975126dda1364346db8498fbc3917b0 (diff)
downloadrust-6e78d6c9d697217998322ab626cbeee24cdfe228.tar.gz
rust-6e78d6c9d697217998322ab626cbeee24cdfe228.zip
Make the CrateNum part of the ExpnId.
Diffstat (limited to 'compiler/rustc_metadata/src/rmeta/decoder')
-rw-r--r--compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs b/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs
index ce8dfeae076..67023e9e84e 100644
--- a/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs
+++ b/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs
@@ -18,11 +18,11 @@ use rustc_middle::ty::query::Providers;
 use rustc_middle::ty::{self, TyCtxt, Visibility};
 use rustc_session::utils::NativeLibKind;
 use rustc_session::{Session, StableCrateId};
+use rustc_span::hygiene::{ExpnData, ExpnHash, ExpnId};
 use rustc_span::source_map::{Span, Spanned};
 use rustc_span::symbol::Symbol;
 
 use rustc_data_structures::sync::Lrc;
-use rustc_span::ExpnId;
 use smallvec::SmallVec;
 use std::any::Any;
 
@@ -494,6 +494,23 @@ impl CrateStore for CStore {
     fn as_any(&self) -> &dyn Any {
         self
     }
+    fn decode_expn_data(&self, sess: &Session, expn_id: ExpnId) -> (ExpnData, ExpnHash) {
+        let crate_data = self.get_crate_data(expn_id.krate);
+        (
+            crate_data
+                .root
+                .expn_data
+                .get(&crate_data, expn_id.local_id)
+                .unwrap()
+                .decode((&crate_data, sess)),
+            crate_data
+                .root
+                .expn_hashes
+                .get(&crate_data, expn_id.local_id)
+                .unwrap()
+                .decode((&crate_data, sess)),
+        )
+    }
 
     fn crate_name(&self, cnum: CrateNum) -> Symbol {
         self.get_crate_data(cnum).root.name