about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-11-17 13:47:30 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-11-17 19:59:34 +0300
commit68985c761386e114ac9a99eeec3e2ed7af2877b5 (patch)
tree2f9518b2923971657970760de3859d643c520dda
parent4b6cef1e32b4f2fa44b7d8ebd7ddef0bdeaf51a2 (diff)
downloadrust-68985c761386e114ac9a99eeec3e2ed7af2877b5.tar.gz
rust-68985c761386e114ac9a99eeec3e2ed7af2877b5.zip
rustc_metadata: Move some structs from `cstore` to `decoder`
This allows to privatize their fields.
-rw-r--r--src/librustc_metadata/creader.rs4
-rw-r--r--src/librustc_metadata/cstore.rs22
-rw-r--r--src/librustc_metadata/locator.rs5
-rw-r--r--src/librustc_metadata/rmeta/decoder.rs25
-rw-r--r--src/librustc_metadata/rmeta/mod.rs2
5 files changed, 31 insertions, 27 deletions
diff --git a/src/librustc_metadata/creader.rs b/src/librustc_metadata/creader.rs
index 6dfb2409775..4d634661576 100644
--- a/src/librustc_metadata/creader.rs
+++ b/src/librustc_metadata/creader.rs
@@ -1,8 +1,8 @@
 //! Validates all used crates and extern libraries and loads their metadata
 
-use crate::cstore::{self, CStore, MetadataBlob};
+use crate::cstore::{self, CStore};
 use crate::locator::{self, CratePaths};
-use crate::rmeta::{CrateRoot, CrateDep};
+use crate::rmeta::{CrateRoot, CrateDep, MetadataBlob};
 use rustc_data_structures::sync::{Lock, Once, AtomicCell};
 
 use rustc::hir::def_id::CrateNum;
diff --git a/src/librustc_metadata/cstore.rs b/src/librustc_metadata/cstore.rs
index 54857ce1b82..7d640422dfc 100644
--- a/src/librustc_metadata/cstore.rs
+++ b/src/librustc_metadata/cstore.rs
@@ -1,7 +1,7 @@
 // The crate store - a central repo for information collected about external
 // crates and libraries
 
-use crate::rmeta;
+use crate::rmeta::{CrateRoot, ImportedSourceFile, Lazy, MetadataBlob};
 use rustc::dep_graph::DepNodeIndex;
 use rustc::hir::def_id::{CrateNum, DefIndex};
 use rustc::hir::map::definitions::DefPathTable;
@@ -9,13 +9,12 @@ use rustc::middle::cstore::{CrateSource, DepKind, ExternCrate};
 use rustc::mir::interpret::AllocDecodingState;
 use rustc_index::vec::IndexVec;
 use rustc::util::nodemap::FxHashMap;
-use rustc_data_structures::sync::{Lrc, Lock, MetadataRef, Once, AtomicCell};
+use rustc_data_structures::sync::{Lrc, Lock, Once, AtomicCell};
 use rustc_data_structures::svh::Svh;
 use syntax::ast;
 use syntax::edition::Edition;
 use syntax_expand::base::SyntaxExtension;
 use syntax::expand::allocator::AllocatorKind;
-use syntax_pos;
 use proc_macro::bridge::client::ProcMacro;
 
 pub use crate::rmeta::{provide, provide_extern};
@@ -26,19 +25,6 @@ pub use crate::rmeta::{provide, provide_extern};
 // own crate numbers.
 crate type CrateNumMap = IndexVec<CrateNum, CrateNum>;
 
-crate struct MetadataBlob(pub MetadataRef);
-
-/// Holds information about a syntax_pos::SourceFile imported from another crate.
-/// See `imported_source_files()` for more information.
-crate struct ImportedSourceFile {
-    /// This SourceFile's byte-offset within the source_map of its original crate
-    pub original_start_pos: syntax_pos::BytePos,
-    /// The end of this SourceFile within the source_map of its original crate
-    pub original_end_pos: syntax_pos::BytePos,
-    /// The imported SourceFile's representation within the local source_map
-    pub translated_source_file: Lrc<syntax_pos::SourceFile>,
-}
-
 crate struct CrateMetadata {
     /// The primary crate data - binary metadata blob.
     crate blob: MetadataBlob,
@@ -50,7 +36,7 @@ crate struct CrateMetadata {
     /// lifetime is only used behind `Lazy`, and therefore acts like an
     /// universal (`for<'tcx>`), that is paired up with whichever `TyCtxt`
     /// is being used to decode those values.
-    crate root: rmeta::CrateRoot<'static>,
+    crate root: CrateRoot<'static>,
     /// For each definition in this crate, we encode a key. When the
     /// crate is loaded, we read all the keys and put them in this
     /// hashmap, which gives the reverse mapping. This allows us to
@@ -60,7 +46,7 @@ crate struct CrateMetadata {
     /// Trait impl data.
     /// FIXME: Used only from queries and can use query cache,
     /// so pre-decoding can probably be avoided.
-    crate trait_impls: FxHashMap<(u32, DefIndex), rmeta::Lazy<[DefIndex]>>,
+    crate trait_impls: FxHashMap<(u32, DefIndex), Lazy<[DefIndex]>>,
     /// Proc macro descriptions for this crate, if it's a proc macro crate.
     crate raw_proc_macros: Option<&'static [ProcMacro]>,
     /// Source maps for code from the crate.
diff --git a/src/librustc_metadata/locator.rs b/src/librustc_metadata/locator.rs
index 582602138e5..bdb01bff325 100644
--- a/src/librustc_metadata/locator.rs
+++ b/src/librustc_metadata/locator.rs
@@ -212,9 +212,8 @@
 //! no means all of the necessary details. Take a look at the rest of
 //! metadata::locator or metadata::creader for all the juicy details!
 
-use crate::cstore::MetadataBlob;
 use crate::creader::Library;
-use crate::rmeta::{METADATA_HEADER, rustc_version};
+use crate::rmeta::{METADATA_HEADER, rustc_version, MetadataBlob};
 
 use rustc_data_structures::fx::FxHashSet;
 use rustc_data_structures::svh::Svh;
@@ -907,7 +906,7 @@ fn get_metadata_section_imp(target: &Target,
             rustc_erase_owner!(OwningRef::new(StableDerefMmap(mmap)).map_owner_box())
         }
     };
-    let blob = MetadataBlob(raw_bytes);
+    let blob = MetadataBlob::new(raw_bytes);
     if blob.is_compatible() {
         Ok(blob)
     } else {
diff --git a/src/librustc_metadata/rmeta/decoder.rs b/src/librustc_metadata/rmeta/decoder.rs
index 7cebf2512d6..5ea23dc4b98 100644
--- a/src/librustc_metadata/rmeta/decoder.rs
+++ b/src/librustc_metadata/rmeta/decoder.rs
@@ -1,6 +1,6 @@
 // Decoding metadata from a single crate's metadata
 
-use crate::cstore::{self, CrateMetadata, MetadataBlob};
+use crate::cstore::CrateMetadata;
 use crate::rmeta::*;
 use crate::rmeta::table::{FixedSizeEncoding, PerDefTable};
 
@@ -44,6 +44,19 @@ pub use cstore_impl::{provide, provide_extern};
 
 mod cstore_impl;
 
+crate struct MetadataBlob(MetadataRef);
+
+/// Holds information about a syntax_pos::SourceFile imported from another crate.
+/// See `imported_source_files()` for more information.
+crate struct ImportedSourceFile {
+    /// This SourceFile's byte-offset within the source_map of its original crate
+    original_start_pos: syntax_pos::BytePos,
+    /// The end of this SourceFile within the source_map of its original crate
+    original_end_pos: syntax_pos::BytePos,
+    /// The imported SourceFile's representation within the local source_map
+    translated_source_file: Lrc<syntax_pos::SourceFile>,
+}
+
 crate struct DecodeContext<'a, 'tcx> {
     opaque: opaque::Decoder<'a>,
     cdata: Option<&'a CrateMetadata>,
@@ -393,7 +406,11 @@ for DecodeContext<'a, 'tcx> {
 
 implement_ty_decoder!( DecodeContext<'a, 'tcx> );
 
-impl<'tcx> MetadataBlob {
+impl MetadataBlob {
+    crate fn new(metadata_ref: MetadataRef) -> MetadataBlob {
+        MetadataBlob(metadata_ref)
+    }
+
     crate fn is_compatible(&self) -> bool {
         self.raw_bytes().starts_with(METADATA_HEADER)
     }
@@ -1296,7 +1313,7 @@ impl<'a, 'tcx> CrateMetadata {
     fn imported_source_files(
         &'a self,
         local_source_map: &source_map::SourceMap,
-    ) -> &[cstore::ImportedSourceFile] {
+    ) -> &[ImportedSourceFile] {
         self.source_map_import_info.init_locking(|| {
             let external_source_map = self.root.source_map.decode(self);
 
@@ -1351,7 +1368,7 @@ impl<'a, 'tcx> CrateMetadata {
                        local_version.name, start_pos, end_pos,
                        local_version.start_pos, local_version.end_pos);
 
-                cstore::ImportedSourceFile {
+                ImportedSourceFile {
                     original_start_pos: start_pos,
                     original_end_pos: end_pos,
                     translated_source_file: local_version,
diff --git a/src/librustc_metadata/rmeta/mod.rs b/src/librustc_metadata/rmeta/mod.rs
index 990a3d984b2..c1dd8499219 100644
--- a/src/librustc_metadata/rmeta/mod.rs
+++ b/src/librustc_metadata/rmeta/mod.rs
@@ -14,6 +14,7 @@ use rustc::ty::{self, Ty, ReprOptions};
 use rustc_target::spec::{PanicStrategy, TargetTriple};
 use rustc_index::vec::IndexVec;
 use rustc_data_structures::svh::Svh;
+use rustc_data_structures::sync::MetadataRef;
 use rustc_serialize::Encodable;
 use syntax::{ast, attr};
 use syntax::edition::Edition;
@@ -24,6 +25,7 @@ use std::marker::PhantomData;
 use std::num::NonZeroUsize;
 
 pub use decoder::{provide, provide_extern};
+crate use decoder::{ImportedSourceFile, MetadataBlob};
 
 mod decoder;
 mod encoder;