about summary refs log tree commit diff
path: root/src/rustc/metadata/tyencode.rs
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-03-22 20:06:01 -0700
committerNiko Matsakis <niko@alum.mit.edu>2012-03-23 21:47:28 -0700
commit042c532a084fa3871a3a2d8955ff82c246db8015 (patch)
tree9b69f961a78deae15a4f8544bec7a4f215a90a5e /src/rustc/metadata/tyencode.rs
parent40443768b16747cb3ef90a2fb2fd9e7f317ff383 (diff)
downloadrust-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.rs15
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('|');
+                }
               }
               _ {}
             }