diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2011-10-21 12:21:27 +0200 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2011-10-21 12:21:27 +0200 |
| commit | 4ebbbe597e44dbed0da3027fbf4e564390e0daeb (patch) | |
| tree | 688153be857cd96a9ea940b0d697b25f1f71d384 /src/comp/metadata | |
| parent | 9bb4595c534ffcd0731ed778beb62bb80d7f9217 (diff) | |
| download | rust-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.rs | 8 | ||||
| -rw-r--r-- | src/comp/metadata/encoder.rs | 17 |
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 } |
