diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-10-13 21:21:08 +0300 |
|---|---|---|
| committer | Pietro Albini <pietro@pietroalbini.org> | 2018-10-18 16:57:11 +0200 |
| commit | 8b2e8dc8de8d3c72282dab072c2147adf179c8b2 (patch) | |
| tree | 6b8d4974a9f0289472bf5f5b24eb8a191a7460fa /src | |
| parent | da60a9cabea7448ef6a3670cfc95d285871d174c (diff) | |
Copy extern prelude from resolver to global context
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/ty/context.rs | 3 | ||||
| -rw-r--r-- | src/librustc/ty/mod.rs | 3 | ||||
| -rw-r--r-- | src/librustc_driver/driver.rs | 1 | ||||
| -rw-r--r-- | src/librustc_resolve/lib.rs | 2 | ||||
| -rw-r--r-- | src/librustc_typeck/check_unused.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/core.rs | 1 |
6 files changed, 8 insertions, 4 deletions
diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index 6738267b5b8..5acbf9b424d 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -927,8 +927,8 @@ pub struct GlobalCtxt<'tcx> { freevars: FxHashMap<DefId, Lrc<Vec<hir::Freevar>>>, maybe_unused_trait_imports: FxHashSet<DefId>, - maybe_unused_extern_crates: Vec<(DefId, Span)>, + pub extern_prelude: FxHashSet<ast::Name>, // Internal cache for metadata decoding. No need to track deps on this. pub rcache: Lock<FxHashMap<ty::CReaderCacheKey, Ty<'tcx>>>, @@ -1245,6 +1245,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { .into_iter() .map(|(id, sp)| (hir.local_def_id(id), sp)) .collect(), + extern_prelude: resolutions.extern_prelude, hir, def_path_hash_to_def_id, queries: query::Queries::new( diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index d9e3bdaf266..bfbd91cdaea 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -36,7 +36,7 @@ use ty::subst::{Subst, Substs}; use ty::util::{IntTypeExt, Discr}; use ty::walk::TypeWalker; use util::captures::Captures; -use util::nodemap::{NodeSet, DefIdMap, FxHashMap}; +use util::nodemap::{NodeSet, DefIdMap, FxHashMap, FxHashSet}; use arena::SyncDroplessArena; use session::DataTypeKind; @@ -139,6 +139,7 @@ pub struct Resolutions { pub maybe_unused_trait_imports: NodeSet, pub maybe_unused_extern_crates: Vec<(NodeId, Span)>, pub export_map: ExportMap, + pub extern_prelude: FxHashSet<Name>, } #[derive(Clone, Copy, PartialEq, Eq, Debug)] diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 7fb66ea97f2..3b0acfd6f8c 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -790,6 +790,7 @@ where trait_map: resolver.trait_map, maybe_unused_trait_imports: resolver.maybe_unused_trait_imports, maybe_unused_extern_crates: resolver.maybe_unused_extern_crates, + extern_prelude: resolver.extern_prelude, }, analysis: ty::CrateAnalysis { diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 8581ab21291..d479b6e2d80 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -1361,7 +1361,7 @@ pub struct Resolver<'a, 'b: 'a> { graph_root: Module<'a>, prelude: Option<Module<'a>>, - extern_prelude: FxHashSet<Name>, + pub extern_prelude: FxHashSet<Name>, /// n.b. This is used only for better diagnostics, not name resolution itself. has_self: FxHashSet<DefId>, diff --git a/src/librustc_typeck/check_unused.rs b/src/librustc_typeck/check_unused.rs index 4b3f08a10ff..9d62afa232b 100644 --- a/src/librustc_typeck/check_unused.rs +++ b/src/librustc_typeck/check_unused.rs @@ -158,7 +158,7 @@ fn unused_crates_lint<'tcx>(tcx: TyCtxt<'_, 'tcx, 'tcx>) { // If the extern crate isn't in the extern prelude, // there is no way it can be written as an `use`. let orig_name = extern_crate.orig_name.unwrap_or(item.name); - if !tcx.sess.extern_prelude.contains(&orig_name) { + if !tcx.extern_prelude.contains(&orig_name) { continue; } diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index ee0c6ee005d..7b46b632b1a 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -457,6 +457,7 @@ pub fn run_core(search_paths: SearchPaths, trait_map: resolver.trait_map.clone(), maybe_unused_trait_imports: resolver.maybe_unused_trait_imports.clone(), maybe_unused_extern_crates: resolver.maybe_unused_extern_crates.clone(), + extern_prelude: resolver.extern_prelude.clone(), }; let analysis = ty::CrateAnalysis { access_levels: Lrc::new(AccessLevels::default()), |
