about summary refs log tree commit diff
path: root/src/comp/metadata
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2011-10-21 12:21:27 +0200
committerMarijn Haverbeke <marijnh@gmail.com>2011-10-21 12:21:27 +0200
commit4ebbbe597e44dbed0da3027fbf4e564390e0daeb (patch)
tree688153be857cd96a9ea940b0d697b25f1f71d384 /src/comp/metadata
parent9bb4595c534ffcd0731ed778beb62bb80d7f9217 (diff)
downloadrust-4ebbbe597e44dbed0da3027fbf4e564390e0daeb.tar.gz
rust-4ebbbe597e44dbed0da3027fbf4e564390e0daeb.zip
Move hash table iteration over to block-taking functions
Issue #1056
Diffstat (limited to 'src/comp/metadata')
-rw-r--r--src/comp/metadata/cstore.rs8
-rw-r--r--src/comp/metadata/encoder.rs17
2 files changed, 10 insertions, 15 deletions
diff --git a/src/comp/metadata/cstore.rs b/src/comp/metadata/cstore.rs
index ee80b11fb5b..f005b0bb991 100644
--- a/src/comp/metadata/cstore.rs
+++ b/src/comp/metadata/cstore.rs
@@ -72,12 +72,8 @@ fn have_crate_data(cstore: cstore, cnum: ast::crate_num) -> bool {
     ret p(cstore).metas.contains_key(cnum);
 }
 
-iter iter_crate_data(cstore: cstore) ->
-     @{key: ast::crate_num, val: crate_metadata} {
-    for each kv: @{key: ast::crate_num, val: crate_metadata} in
-             p(cstore).metas.items() {
-        put kv;
-    }
+fn iter_crate_data(cstore: cstore, i: block(ast::crate_num, crate_metadata)) {
+    p(cstore).metas.items {|k,v| i(k, v);};
 }
 
 fn add_used_crate_file(cstore: cstore, lib: str) {
diff --git a/src/comp/metadata/encoder.rs b/src/comp/metadata/encoder.rs
index 3617005a400..f392d2367e4 100644
--- a/src/comp/metadata/encoder.rs
+++ b/src/comp/metadata/encoder.rs
@@ -371,20 +371,19 @@ fn encode_info_for_items(ecx: @encode_ctxt, ebml_w: ebml::writer) ->
    [entry<int>] {
     let index: [entry<int>] = [];
     ebml::start_tag(ebml_w, tag_items_data);
-    for each kvp: @{key: node_id, val: middle::ast_map::ast_node} in
-             ecx.ccx.ast_map.items() {
-        alt kvp.val {
+    ecx.ccx.ast_map.items {|key, val|
+        alt val {
           middle::ast_map::node_item(i) {
-            index += [{val: kvp.key, pos: ebml_w.writer.tell()}];
+            index += [{val: key, pos: ebml_w.writer.tell()}];
             encode_info_for_item(ecx, ebml_w, i, index);
           }
           middle::ast_map::node_native_item(i) {
-            index += [{val: kvp.key, pos: ebml_w.writer.tell()}];
+            index += [{val: key, pos: ebml_w.writer.tell()}];
             encode_info_for_native_item(ecx, ebml_w, i);
           }
           _ { }
         }
-    }
+    };
     ebml::end_tag(ebml_w);
     ret index;
 }
@@ -544,9 +543,9 @@ fn encode_crate_deps(ebml_w: ebml::writer, cstore: cstore::cstore) {
 
         // Pull the cnums and names out of cstore
         let pairs: [mutable numname] = [mutable];
-        for each hashkv: hashkv in cstore::iter_crate_data(cstore) {
-            pairs += [mutable {crate: hashkv.key, ident: hashkv.val.name}];
-        }
+        cstore::iter_crate_data(cstore) {|key, val|
+            pairs += [mutable {crate: key, ident: val.name}];
+        };
 
         // Sort by cnum
         fn lteq(kv1: numname, kv2: numname) -> bool { kv1.crate <= kv2.crate }