about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorTheo Belaire <theo.belaire@gmail.com>2015-04-25 14:35:47 -0400
committerTheo Belaire <theo.belaire@gmail.com>2015-04-25 14:35:47 -0400
commit168615f869ea560aa95e12a3c043c19110368be6 (patch)
tree9c2be53333212a235156745b251cce77a181ef3b /src
parent74648b5d647526e421d5015417968b64c1900512 (diff)
downloadrust-168615f869ea560aa95e12a3c043c19110368be6.tar.gz
rust-168615f869ea560aa95e12a3c043c19110368be6.zip
Now passing in the ImportResolver to check_conflict...
It compiles, yay.
Diffstat (limited to 'src')
-rw-r--r--src/librustc_resolve/resolve_imports.rs31
1 files changed, 14 insertions, 17 deletions
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs
index c099123ad25..daffe08fe3a 100644
--- a/src/librustc_resolve/resolve_imports.rs
+++ b/src/librustc_resolve/resolve_imports.rs
@@ -618,7 +618,7 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
                                namespace_name,
                                name_bindings.def_for_namespace(namespace));
                         self.check_for_conflicting_import(
-                            &import_resolution.target_for_namespace(namespace),
+                            &import_resolution,
                             directive.span,
                             target,
                             namespace);
@@ -755,7 +755,7 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
                             // Continue.
                         }
                         Some(ref value_target) => {
-                            self.check_for_conflicting_import(&dest_import_resolution.value_target,
+                            self.check_for_conflicting_import(&dest_import_resolution,
                                                               import_directive.span,
                                                               *ident,
                                                               ValueNS);
@@ -767,7 +767,7 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
                             // Continue.
                         }
                         Some(ref type_target) => {
-                            self.check_for_conflicting_import(&dest_import_resolution.type_target,
+                            self.check_for_conflicting_import(&dest_import_resolution,
                                                               import_directive.span,
                                                               *ident,
                                                               TypeNS);
@@ -885,32 +885,29 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
 
     /// Checks that imported names and items don't have the same name.
     fn check_for_conflicting_import(&mut self,
-                                    target: &Option<Target>,
+                                    import_resolution: &ImportResolution,
                                     import_span: Span,
                                     name: Name,
                                     namespace: Namespace) {
+        let target = import_resolution.target_for_namespace(namespace);
         debug!("check_for_conflicting_import: {}; target exists: {}",
                &token::get_name(name),
                target.is_some());
 
-        match *target {
+        match target {
             Some(ref target) if target.shadowable != Shadowable::Always => {
-                let msg = format!("a {} named `{}` has already been imported \
-                                   in this module",
-                                  match namespace {
-                                    TypeNS => "type",
-                                    ValueNS => "value",
-                                  },
+                let ns_word = match namespace {
+                    TypeNS => "type",
+                    ValueNS => "value",
+                };
+                span_err!(self.resolver.session, import_span, E0252,
+                          "a {} named `{}` has already been imported \
+                           in this module", ns_word,
                                   &token::get_name(name));
-                span_err!(self.resolver.session, import_span, E0252, "{}", &msg[..]);
                 if let Some(sp) = target.bindings.span_for_namespace(namespace) {
                     span_note!(self.resolver.session, sp,
                                "first import of {} `{}` here",
-                               match namespace {
-                                   TypeNS => "type",
-                                   ValueNS => "value",
-                               },
-                               token::get_name(name));
+                               ns_word, token::get_name(name));
                 } else {
                     span_note!(self.resolver.session, import_span, "I can't find where it was previously imported");
                 }