about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_save_analysis/dump_visitor.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/librustc_save_analysis/dump_visitor.rs b/src/librustc_save_analysis/dump_visitor.rs
index f74e8cb2160..4cfd570adea 100644
--- a/src/librustc_save_analysis/dump_visitor.rs
+++ b/src/librustc_save_analysis/dump_visitor.rs
@@ -560,14 +560,20 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
         let (value, fields) =
             if let ast::ItemKind::Struct(ast::VariantData::Struct(ref fields, _), _) = item.node
         {
+            let include_priv_fields = !self.save_ctxt.config.pub_only;
             let fields_str = fields.iter()
                                    .enumerate()
-                                   .map(|(i, f)| f.ident.map(|i| i.to_string())
-                                                  .unwrap_or(i.to_string()))
+                                   .filter_map(|(i, f)| {
+                                        if include_priv_fields || f.vis == ast::Visibility::Public {
+                                            f.ident.map(|i| i.to_string()).or_else(|| Some(i.to_string()))
+                                        } else {
+                                            None
+                                        }
+                                   })
                                    .collect::<Vec<_>>()
                                    .join(", ");
-            (format!("{} {{ {} }}", name, fields_str),
-             fields.iter().map(|f| ::id_from_node_id(f.id, &self.save_ctxt)).collect())
+            let value = format!("{} {{ {} }}", name, fields_str);
+            (value, fields.iter().map(|f| ::id_from_node_id(f.id, &self.save_ctxt)).collect())
         } else {
             (String::new(), vec![])
         };