From 4cbd397ce861ae0ee823ab56d1f797dee67e0b64 Mon Sep 17 00:00:00 2001 From: David Wood Date: Thu, 27 Sep 2018 21:38:11 +0200 Subject: [PATCH] Move prelude crate names into `Session`. Avoid hardcoding and special-casing the `std` crate name in the item path logic by moving the prelude crate name logic into the `Session` type so it can be reused in the item path logic and resolve module. --- src/librustc/session/mod.rs | 13 ++++++------- src/librustc/ty/item_path.rs | 4 +++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs index 79d06cd7f1254..3c209a4324675 100644 --- a/src/librustc/session/mod.rs +++ b/src/librustc/session/mod.rs @@ -28,17 +28,16 @@ use util::common::ProfileQueriesMsg; use rustc_data_structures::base_n; use rustc_data_structures::sync::{self, Lrc, Lock, LockCell, OneThread, Once, RwLock}; -use syntax::ast::NodeId; use errors::{self, DiagnosticBuilder, DiagnosticId, Applicability}; use errors::emitter::{Emitter, EmitterWriter}; +use syntax::ast::{self, NodeId}; use syntax::edition::Edition; +use syntax::feature_gate::{self, AttributeType}; use syntax::json::JsonEmitter; -use syntax::feature_gate; -use syntax::parse; -use syntax::parse::ParseSess; -use syntax::{ast, source_map}; -use syntax::feature_gate::AttributeType; -use syntax_pos::{MultiSpan, Span, symbol::Symbol}; +use syntax::source_map; +use syntax::symbol::Symbol; +use syntax::parse::{self, ParseSess}; +use syntax_pos::{MultiSpan, Span}; use util::profiling::SelfProfiler; use rustc_target::spec::PanicStrategy; diff --git a/src/librustc/ty/item_path.rs b/src/librustc/ty/item_path.rs index 41f908b4be6b5..4e7783a00cb86 100644 --- a/src/librustc/ty/item_path.rs +++ b/src/librustc/ty/item_path.rs @@ -281,7 +281,9 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { // In particular, don't recurse to print the crate root if we // just printed `std`. In doing this, we are able to add // `crate::` to trait import suggestions. - DefPathData::CrateRoot if data.as_interned_str() == "std" => {}, + DefPathData::CrateRoot if self.sess.extern_prelude.contains( + &data.as_interned_str().as_symbol() + ) => {}, _ => self.push_item_path(buffer, parent_def_id), }