From fb7c0b44bb8dd47de07a05d6a17813dd614e3dff Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Sun, 17 May 2015 18:14:40 +0200 Subject: [PATCH] Return the iterator from reader::docs. --- src/librbml/lib.rs | 10 ++++------ src/librustc/metadata/decoder.rs | 17 +++++------------ src/librustc/middle/astencode.rs | 5 ++--- 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/src/librbml/lib.rs b/src/librbml/lib.rs index 66fb579b180..65433c528bc 100644 --- a/src/librbml/lib.rs +++ b/src/librbml/lib.rs @@ -397,12 +397,10 @@ pub fn get_doc<'a>(d: Doc<'a>, tg: usize) -> Doc<'a> { } } - pub fn docs(d: Doc, mut it: F) -> bool where - F: FnMut(usize, Doc) -> bool, - { - DocsIterator { d: d }.all(|(value, doc)| { - it(value, doc) - }) + pub fn docs<'a>(d: Doc<'a>) -> DocsIterator<'a> { + DocsIterator { + d: d + } } pub struct DocsIterator<'a> { diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs index 2f2a5d31c9f..2c11ee8baa9 100644 --- a/src/librustc/metadata/decoder.rs +++ b/src/librustc/metadata/decoder.rs @@ -275,25 +275,18 @@ fn enum_variant_ids(item: rbml::Doc, cdata: Cmd) -> Vec { fn item_path(item_doc: rbml::Doc) -> Vec { let path_doc = reader::get_doc(item_doc, tag_path); - - let len_doc = reader::get_doc(path_doc, tag_path_len); - let len = reader::doc_as_u32(len_doc) as usize; - - let mut result = Vec::with_capacity(len); - reader::docs(path_doc, |tag, elt_doc| { + reader::docs(path_doc).filter_map(|(tag, elt_doc)| { if tag == tag_path_elem_mod { let s = elt_doc.as_str_slice(); - result.push(ast_map::PathMod(token::intern(s))); + Some(ast_map::PathMod(token::intern(s))) } else if tag == tag_path_elem_name { let s = elt_doc.as_str_slice(); - result.push(ast_map::PathName(token::intern(s))); + Some(ast_map::PathName(token::intern(s))) } else { // ignore tag_path_len element + None } - true - }); - - result + }).collect() } fn item_name(intr: &IdentInterner, item: rbml::Doc) -> ast::Name { diff --git a/src/librustc/middle/astencode.rs b/src/librustc/middle/astencode.rs index 328972c54e3..894a7db21be 100644 --- a/src/librustc/middle/astencode.rs +++ b/src/librustc/middle/astencode.rs @@ -1706,7 +1706,7 @@ fn convert_def_id(&mut self, fn decode_side_tables(dcx: &DecodeContext, ast_doc: rbml::Doc) { let tbl_doc = ast_doc.get(c::tag_table as usize); - reader::docs(tbl_doc, |tag, entry_doc| { + for (tag, entry_doc) in reader::docs(tbl_doc) { let mut entry_dsr = reader::Decoder::new(entry_doc); let id0: ast::NodeId = Decodable::decode(&mut entry_dsr).unwrap(); let id = dcx.tr_id(id0); @@ -1815,8 +1815,7 @@ fn decode_side_tables(dcx: &DecodeContext, } debug!(">< Side table doc loaded"); - true - }); + } } // ______________________________________________________________________ -- 2.44.0