diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-03-22 20:06:01 -0700 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-03-23 21:47:28 -0700 |
| commit | 042c532a084fa3871a3a2d8955ff82c246db8015 (patch) | |
| tree | 9b69f961a78deae15a4f8544bec7a4f215a90a5e /src/rustc/metadata/tyencode.rs | |
| parent | 40443768b16747cb3ef90a2fb2fd9e7f317ff383 (diff) | |
| download | rust-042c532a084fa3871a3a2d8955ff82c246db8015.tar.gz rust-042c532a084fa3871a3a2d8955ff82c246db8015.zip | |
Implement new inference algorithm.
Diffstat (limited to 'src/rustc/metadata/tyencode.rs')
| -rw-r--r-- | src/rustc/metadata/tyencode.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/rustc/metadata/tyencode.rs b/src/rustc/metadata/tyencode.rs index 80f830ce88d..6e1e8b15f56 100644 --- a/src/rustc/metadata/tyencode.rs +++ b/src/rustc/metadata/tyencode.rs @@ -6,6 +6,7 @@ import syntax::ast::*; import driver::session::session; import middle::ty; import syntax::print::pprust::*; +import middle::trans::reachable; export ctxt; export ty_abbrev; @@ -18,7 +19,8 @@ export enc_mode; type ctxt = // Def -> str Callback: // The type context. - {ds: fn@(def_id) -> str, tcx: ty::ctxt, abbrevs: abbrev_ctxt}; + {ds: fn@(def_id) -> str, tcx: ty::ctxt, + reachable: reachable::map, abbrevs: abbrev_ctxt}; // Compact string representation for ty.t values. API ty_str & parse_from_str. // Extra parameters are for converting to/from def_ids in the string rep. @@ -55,9 +57,14 @@ fn enc_ty(w: io::writer, cx: @ctxt, t: ty::t) { let pos = w.tell(); alt ty::type_def_id(t) { some(def_id) { - w.write_char('"'); - w.write_str(cx.ds(def_id)); - w.write_char('|'); + // Do not emit node ids that map to unexported names. Those + // are not helpful. + if def_id.crate != local_crate || + cx.reachable.contains_key(def_id.node) { + w.write_char('"'); + w.write_str(cx.ds(def_id)); + w.write_char('|'); + } } _ {} } |
