diff --git a/src/librustc/metadata/csearch.rs b/src/librustc/metadata/csearch.rs index cfff7c9935bc..8650df46cc46 100644 --- a/src/librustc/metadata/csearch.rs +++ b/src/librustc/metadata/csearch.rs @@ -209,7 +209,7 @@ pub fn get_item_attrs(cstore: &cstore::CStore, F: FnOnce(Vec), { let cdata = cstore.get_crate_data(def_id.krate); - decoder::get_item_attrs(&*cdata, def_id.node, f) + f(decoder::get_item_attrs(&*cdata, def_id.node)); } pub fn get_struct_fields(cstore: &cstore::CStore, diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs index 5ac8f908bf16..dfbff7156886 100644 --- a/src/librustc/metadata/decoder.rs +++ b/src/librustc/metadata/decoder.rs @@ -1025,18 +1025,16 @@ pub fn get_tuple_struct_definition_if_ctor(cdata: Cmd, ret } -pub fn get_item_attrs(cdata: Cmd, - orig_node_id: ast::NodeId, - f: F) where - F: FnOnce(Vec), -{ +pub fn get_item_attrs(cdata: Cmd, + orig_node_id: ast::NodeId) + -> Vec { // The attributes for a tuple struct are attached to the definition, not the ctor; // we assume that someone passing in a tuple struct ctor is actually wanting to // look at the definition let node_id = get_tuple_struct_definition_if_ctor(cdata, orig_node_id); let node_id = node_id.map(|x| x.node).unwrap_or(orig_node_id); let item = lookup_item(node_id, cdata.data()); - f(get_attributes(item)); + get_attributes(item) } pub fn get_struct_field_attrs(cdata: Cmd) -> HashMap> {