diff options
| author | arcnmx <arcnmx@users.noreply.github.com> | 2016-01-15 14:43:14 -0500 |
|---|---|---|
| committer | arcnmx <arcnmx@users.noreply.github.com> | 2016-02-11 12:45:52 -0500 |
| commit | 0ff055ad6640e26a4ddf783682545320de0d1c03 (patch) | |
| tree | d918826422bbf9d81d971c87d65af560a8955cb9 | |
| parent | a141c52816b606f01a3eb432ea1c5e1131513d1c (diff) | |
| download | rust-0ff055ad6640e26a4ddf783682545320de0d1c03.tar.gz rust-0ff055ad6640e26a4ddf783682545320de0d1c03.zip | |
Pass through diagnostic handler instead
| -rw-r--r-- | src/librustc/middle/reachable.rs | 4 | ||||
| -rw-r--r-- | src/librustc_metadata/decoder.rs | 3 | ||||
| -rw-r--r-- | src/librustc_trans/trans/base.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/attr.rs | 10 |
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)] |
