about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2012-03-08 10:58:23 +0100
committerMarijn Haverbeke <marijnh@gmail.com>2012-03-15 08:59:29 +0100
commitc67679ea0331d2058c8cb3cd68700bd5f515a2d5 (patch)
treee24c00a93b68504c7b37bdbe786edc099cf89bfe
parentb2e4872e2c111a3c6a3b0e797ae9c53e3a6768a2 (diff)
downloadrust-c67679ea0331d2058c8cb3cd68700bd5f515a2d5.tar.gz
rust-c67679ea0331d2058c8cb3cd68700bd5f515a2d5.zip
Write out the AST for all externally-reachable generics
-rw-r--r--src/rustc/metadata/encoder.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs
index 4eb2cf0a83a..9a9075a65ba 100644
--- a/src/rustc/metadata/encoder.rs
+++ b/src/rustc/metadata/encoder.rs
@@ -80,7 +80,8 @@ fn encode_module_item_paths(ebml_w: ebml::writer, ecx: @encode_ctxt,
                             module: _mod, path: [str], &index: [entry<str>]) {
     // FIXME factor out add_to_index/start/encode_name/encode_def_id/end ops
     for it: @item in module.items {
-        if !ecx.reachable.contains_key(it.id) { cont; }
+        if !ecx.reachable.contains_key(it.id) ||
+           !ast_util::is_exported(it.ident, module) { cont; }
         alt it.node {
           item_const(_, _) {
             add_to_index(ebml_w, path, index, it.ident);
@@ -362,7 +363,7 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item,
         encode_type(ecx, ebml_w, node_id_to_type(tcx, item.id));
         encode_symbol(ecx, ebml_w, item.id);
         encode_path(ebml_w, path, ast_map::path_name(item.ident));
-        if should_inline(item.attrs) {
+        if tps.len() > 0u || should_inline(item.attrs) {
             astencode::encode_inlined_item(ecx, ebml_w, path, ii_item(item));
         }
         ebml_w.end_tag();