From 21064d097eb7d1de444fc53af32197b67704c36d Mon Sep 17 00:00:00 2001 From: Jeffrey Seyfried Date: Tue, 1 Mar 2016 01:43:10 +0000 Subject: [PATCH] Refactor away resolve_imports::Shadowable and rename shadowable -> is_prelude --- src/librustc_resolve/build_reduced_graph.rs | 18 ++++++------------ src/librustc_resolve/resolve_imports.rs | 15 ++++----------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/src/librustc_resolve/build_reduced_graph.rs b/src/librustc_resolve/build_reduced_graph.rs index 08b5e517290..c30e6b8e2cf 100644 --- a/src/librustc_resolve/build_reduced_graph.rs +++ b/src/librustc_resolve/build_reduced_graph.rs @@ -22,7 +22,6 @@ use {NameBinding, NameBindingKind}; use module_to_string; use ParentLink::{ModuleParentLink, BlockParentLink}; use Resolver; -use resolve_imports::Shadowable; use {resolve_error, resolve_struct_error, ResolutionError}; use rustc::middle::cstore::{CrateStore, ChildItem, DlDef, DlField, DlImpl}; @@ -161,14 +160,9 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> { }; // Build up the import directives. - let shadowable = item.attrs.iter().any(|attr| { + let is_prelude = item.attrs.iter().any(|attr| { attr.name() == special_idents::prelude_import.name.as_str() }); - let shadowable = if shadowable { - Shadowable::Always - } else { - Shadowable::Never - }; match view_path.node { ViewPathSimple(binding, ref full_path) => { @@ -186,7 +180,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> { view_path.span, item.id, is_public, - shadowable); + is_prelude); } ViewPathList(_, ref source_items) => { // Make sure there's at most one `mod` import in the list. @@ -237,7 +231,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> { source_item.span, source_item.node.id(), is_public, - shadowable); + is_prelude); } } ViewPathGlob(_) => { @@ -247,7 +241,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> { view_path.span, item.id, is_public, - shadowable); + is_prelude); } } parent @@ -631,7 +625,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> { span: Span, id: NodeId, is_public: bool, - shadowable: Shadowable) { + is_prelude: bool) { // Bump the reference count on the name. Or, if this is a glob, set // the appropriate flag. @@ -648,7 +642,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> { } let directive = - ImportDirective::new(module_path, subclass, span, id, is_public, shadowable); + ImportDirective::new(module_path, subclass, span, id, is_public, is_prelude); module_.add_import_directive(directive); self.unresolved_imports += 1; } diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 61e0add8602..eaa0753b8ce 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -57,13 +57,6 @@ impl ImportDirectiveSubclass { } } -/// Whether an import can be shadowed by another import. -#[derive(Debug,PartialEq,Clone,Copy)] -pub enum Shadowable { - Always, - Never, -} - /// One import directive. #[derive(Debug,Clone)] pub struct ImportDirective { @@ -72,7 +65,7 @@ pub struct ImportDirective { pub span: Span, pub id: NodeId, pub is_public: bool, // see note in ImportResolutionPerNamespace about how to use this - pub shadowable: Shadowable, + pub is_prelude: bool, } impl ImportDirective { @@ -81,7 +74,7 @@ impl ImportDirective { span: Span, id: NodeId, is_public: bool, - shadowable: Shadowable) + is_prelude: bool) -> ImportDirective { ImportDirective { module_path: module_path, @@ -89,7 +82,7 @@ impl ImportDirective { span: span, id: id, is_public: is_public, - shadowable: shadowable, + is_prelude: is_prelude, } } @@ -105,7 +98,7 @@ impl ImportDirective { if let GlobImport = self.subclass { modifiers = modifiers | DefModifiers::GLOB_IMPORTED; } - if self.shadowable == Shadowable::Always { + if self.is_prelude { modifiers = modifiers | DefModifiers::PRELUDE; }