about summary refs log tree commit diff
diff options
context:
space:
mode:
authorarcnmx <arcnmx@users.noreply.github.com>2016-01-15 14:43:14 -0500
committerarcnmx <arcnmx@users.noreply.github.com>2016-02-11 12:45:52 -0500
commit0ff055ad6640e26a4ddf783682545320de0d1c03 (patch)
treed918826422bbf9d81d971c87d65af560a8955cb9
parenta141c52816b606f01a3eb432ea1c5e1131513d1c (diff)
downloadrust-0ff055ad6640e26a4ddf783682545320de0d1c03.tar.gz
rust-0ff055ad6640e26a4ddf783682545320de0d1c03.zip
Pass through diagnostic handler instead
-rw-r--r--src/librustc/middle/reachable.rs4
-rw-r--r--src/librustc_metadata/decoder.rs3
-rw-r--r--src/librustc_trans/trans/base.rs2
-rw-r--r--src/libsyntax/attr.rs10
4 files changed, 11 insertions, 8 deletions
diff --git a/src/librustc/middle/reachable.rs b/src/librustc/middle/reachable.rs
index 5486172b830..d2e1b3edc3a 100644
--- a/src/librustc/middle/reachable.rs
+++ b/src/librustc/middle/reachable.rs
@@ -237,7 +237,9 @@ impl<'a, 'tcx> ReachableContext<'a, 'tcx> {
                 } else {
                     false
                 };
-                if reachable || attr::contains_extern_indicator(&item.attrs) {
+                let is_extern = attr::contains_extern_indicator(&self.tcx.sess.diagnostic(),
+                                                                &item.attrs);
+                if reachable || is_extern {
                     self.reachable_symbols.insert(search_item);
                 }
             }
diff --git a/src/librustc_metadata/decoder.rs b/src/librustc_metadata/decoder.rs
index 3ec32635a4b..8409a0c74b8 100644
--- a/src/librustc_metadata/decoder.rs
+++ b/src/librustc_metadata/decoder.rs
@@ -1586,7 +1586,8 @@ pub fn is_extern_item(cdata: Cmd, id: DefIndex, tcx: &ty::ctxt) -> bool {
     };
 
     if applicable {
-        attr::contains_extern_indicator(&get_attributes(item_doc))
+        attr::contains_extern_indicator(tcx.sess.diagnostic(),
+                                        &get_attributes(item_doc))
     } else {
         false
     }
diff --git a/src/librustc_trans/trans/base.rs b/src/librustc_trans/trans/base.rs
index 5a3c5ced804..4748c62921d 100644
--- a/src/librustc_trans/trans/base.rs
+++ b/src/librustc_trans/trans/base.rs
@@ -2727,7 +2727,7 @@ fn exported_name<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
         None => {}
     }
 
-    match attr::find_export_name_attr(Some(ccx.sess().diagnostic()), attrs) {
+    match attr::find_export_name_attr(ccx.sess().diagnostic(), attrs) {
         // Use provided name
         Some(name) => name.to_string(),
         _ => {
diff --git a/src/libsyntax/attr.rs b/src/libsyntax/attr.rs
index fca659e63b5..9953947eb52 100644
--- a/src/libsyntax/attr.rs
+++ b/src/libsyntax/attr.rs
@@ -298,16 +298,16 @@ pub fn find_crate_name(attrs: &[Attribute]) -> Option<InternedString> {
 }
 
 /// Find the value of #[export_name=*] attribute and check its validity.
-pub fn find_export_name_attr(diag: Option<&Handler>, attrs: &[Attribute]) -> Option<InternedString> {
+pub fn find_export_name_attr(diag: &Handler, attrs: &[Attribute]) -> Option<InternedString> {
     attrs.iter().fold(None, |ia,attr| {
         if attr.check_name("export_name") {
             if let s@Some(_) = attr.value_str() {
                 s
             } else {
-                diag.map(|d| d.struct_span_err(attr.span,
+                diag.struct_span_err(attr.span,
                                      "export_name attribute has invalid format")
                     .help("use #[export_name=\"*\"]")
-                    .emit());
+                    .emit();
                 None
             }
         } else {
@@ -316,9 +316,9 @@ pub fn find_export_name_attr(diag: Option<&Handler>, attrs: &[Attribute]) -> Opt
     })
 }
 
-pub fn contains_extern_indicator(attrs: &[Attribute]) -> bool {
+pub fn contains_extern_indicator(diag: &Handler, attrs: &[Attribute]) -> bool {
     contains_name(attrs, "no_mangle") ||
-        find_export_name_attr(None, attrs).is_some()
+        find_export_name_attr(diag, attrs).is_some()
 }
 
 #[derive(Copy, Clone, PartialEq)]