rustc: Convert lang_item to use an iterator

This commit is contained in:
blake2-ppc 2013-09-30 02:34:36 +02:00
parent 8e69c05b7c
commit abcca1c7d1
2 changed files with 6 additions and 5 deletions

View File

@ -1574,7 +1574,7 @@ fn encode_crate_deps(ecx: &EncodeContext,
fn encode_lang_items(ecx: &EncodeContext, ebml_w: &mut writer::Encoder) {
ebml_w.start_tag(tag_lang_items);
do ecx.tcx.lang_items.each_item |def_id, i| {
for (i, def_id) in ecx.tcx.lang_items.items() {
for id in def_id.iter() {
if id.crate == LOCAL_CRATE {
ebml_w.start_tag(tag_lang_items_item);
@ -1590,8 +1590,7 @@ fn encode_lang_items(ecx: &EncodeContext, ebml_w: &mut writer::Encoder) {
ebml_w.end_tag(); // tag_lang_items_item
}
}
true
};
}
ebml_w.end_tag(); // tag_lang_items
}

View File

@ -32,6 +32,8 @@ use syntax::visit;
use syntax::visit::Visitor;
use std::hashmap::HashMap;
use std::iter::Enumerate;
use std::vec;
pub enum LangItem {
FreezeTraitLangItem, // 0
@ -92,8 +94,8 @@ impl LanguageItems {
}
}
pub fn each_item(&self, f: &fn(Option<DefId>, uint) -> bool) -> bool {
self.items.iter().enumerate().advance(|(i, &item)| f(item, i))
pub fn items<'a>(&'a self) -> Enumerate<vec::VecIterator<'a, Option<DefId>>> {
self.items.iter().enumerate()
}
pub fn item_name(index: uint) -> &'static str {