diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2012-03-06 13:57:07 +0100 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2012-03-06 17:11:30 +0100 |
| commit | 4e4bd585cd59caeb3a2fb107f1f5ba272149b3ee (patch) | |
| tree | 2935b3fd86619bcbd189b6eb7e07067a161dfebd /src/rustc/metadata | |
| parent | 19508c7d531910c309cd63e9ade2fe1be80ff71b (diff) | |
| download | rust-4e4bd585cd59caeb3a2fb107f1f5ba272149b3ee.tar.gz rust-4e4bd585cd59caeb3a2fb107f1f5ba272149b3ee.zip | |
Track all exports in exp_map
This is needed because the reachability checker needs to be able to follow exports. Issue #1934
Diffstat (limited to 'src/rustc/metadata')
| -rw-r--r-- | src/rustc/metadata/encoder.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs index cee46b2b054..8ae7b6e3592 100644 --- a/src/rustc/metadata/encoder.rs +++ b/src/rustc/metadata/encoder.rs @@ -159,12 +159,17 @@ fn encode_item_paths(ebml_w: ebml::writer, ecx: @encode_ctxt, crate: @crate) fn encode_reexport_paths(ebml_w: ebml::writer, ecx: @encode_ctxt, &index: [entry<str>]) { - ecx.ccx.exp_map.items {|path, defs| - for def in *defs { + let tcx = ecx.ccx.tcx; + ecx.ccx.exp_map.items {|exp_id, defs| + for def in defs { + if !def.reexp { cont; } + let path = alt check tcx.items.get(exp_id) { + ast_map::node_export(_, path) { ast_map::path_to_str(*path) } + }; index += [{val: path, pos: ebml_w.writer.tell()}]; ebml_w.start_tag(tag_paths_data_item); encode_name(ebml_w, path); - encode_def_id(ebml_w, ast_util::def_id_of_def(def)); + encode_def_id(ebml_w, def.id); ebml_w.end_tag(); } } |
