about summary refs log tree commit diff
path: root/src/librustc
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2015-01-11 18:16:02 +0100
committerMs2ger <ms2ger@gmail.com>2015-01-13 10:28:06 +0100
commit27db3f058523ce66e284436e4a3a72edad4c4b81 (patch)
treea588690dade9f566b786e0b25b64cce2f769772c /src/librustc
parent56f3554f52e50712fe0830720d8f7e4a4fdaa0cf (diff)
downloadrust-27db3f058523ce66e284436e4a3a72edad4c4b81.tar.gz
rust-27db3f058523ce66e284436e4a3a72edad4c4b81.zip
Return the Vec from csearch::get_item_attrs.
Using a closure unnecessarily obfuscates the code.
Diffstat (limited to 'src/librustc')
-rw-r--r--src/librustc/lint/builtin.rs5
-rw-r--r--src/librustc/metadata/csearch.rs10
-rw-r--r--src/librustc/middle/ty.rs11
3 files changed, 9 insertions, 17 deletions
diff --git a/src/librustc/lint/builtin.rs b/src/librustc/lint/builtin.rs
index 8ed177c82a8..d95000ece5a 100644
--- a/src/librustc/lint/builtin.rs
+++ b/src/librustc/lint/builtin.rs
@@ -774,9 +774,8 @@ impl LintPass for UnusedResults {
                         warned |= check_must_use(cx, &it.attrs[], s.span);
                     }
                 } else {
-                    csearch::get_item_attrs(&cx.sess().cstore, did, |attrs| {
-                        warned |= check_must_use(cx, &attrs[], s.span);
-                    });
+                    let attrs = csearch::get_item_attrs(&cx.sess().cstore, did);
+                    warned |= check_must_use(cx, &attrs[], s.span);
                 }
             }
             _ => {}
diff --git a/src/librustc/metadata/csearch.rs b/src/librustc/metadata/csearch.rs
index 8650df46cc4..0bbd11bea0a 100644
--- a/src/librustc/metadata/csearch.rs
+++ b/src/librustc/metadata/csearch.rs
@@ -203,13 +203,11 @@ pub fn get_methods_if_impl(cstore: &cstore::CStore,
     decoder::get_methods_if_impl(cstore.intr.clone(), &*cdata, def.node)
 }
 
-pub fn get_item_attrs<F>(cstore: &cstore::CStore,
-                         def_id: ast::DefId,
-                         f: F) where
-    F: FnOnce(Vec<ast::Attribute>),
-{
+pub fn get_item_attrs(cstore: &cstore::CStore,
+                      def_id: ast::DefId)
+                      -> Vec<ast::Attribute> {
     let cdata = cstore.get_crate_data(def_id.krate);
-    f(decoder::get_item_attrs(&*cdata, def_id.node));
+    decoder::get_item_attrs(&*cdata, def_id.node)
 }
 
 pub fn get_struct_fields(cstore: &cstore::CStore,
diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs
index cf30969ebef..2cef5f8353f 100644
--- a/src/librustc/middle/ty.rs
+++ b/src/librustc/middle/ty.rs
@@ -5556,8 +5556,7 @@ pub fn predicates<'tcx>(
 }
 
 /// Iterate over attributes of a definition.
-// (This should really be an iterator, but that would require csearch and
-// decoder to use iterators instead of higher-order functions.)
+// (This should really be an iterator.)
 pub fn each_attr<F>(tcx: &ctxt, did: DefId, mut f: F) -> bool where
     F: FnMut(&ast::Attribute) -> bool,
 {
@@ -5566,12 +5565,8 @@ pub fn each_attr<F>(tcx: &ctxt, did: DefId, mut f: F) -> bool where
         item.attrs.iter().all(|attr| f(attr))
     } else {
         info!("getting foreign attrs");
-        let mut cont = true;
-        csearch::get_item_attrs(&tcx.sess.cstore, did, |attrs| {
-            if cont {
-                cont = attrs.iter().all(|attr| f(attr));
-            }
-        });
+        let attrs = csearch::get_item_attrs(&tcx.sess.cstore, did);
+        let cont = attrs.iter().all(|attr| f(attr));
         info!("done");
         cont
     }