Skip to content

Commit 4e6c1dd

Browse files
committed
save-analysis: only emit public fields in value of a struct if the config permits
1 parent 640cfc8 commit 4e6c1dd

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/librustc_save_analysis/dump_visitor.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -560,14 +560,20 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
560560
let (value, fields) =
561561
if let ast::ItemKind::Struct(ast::VariantData::Struct(ref fields, _), _) = item.node
562562
{
563+
let include_priv_fields = !self.save_ctxt.config.pub_only;
563564
let fields_str = fields.iter()
564565
.enumerate()
565-
.map(|(i, f)| f.ident.map(|i| i.to_string())
566-
.unwrap_or(i.to_string()))
566+
.filter_map(|(i, f)| {
567+
if include_priv_fields || f.vis == ast::Visibility::Public {
568+
f.ident.map(|i| i.to_string()).or_else(|| Some(i.to_string()))
569+
} else {
570+
None
571+
}
572+
})
567573
.collect::<Vec<_>>()
568574
.join(", ");
569-
(format!("{} {{ {} }}", name, fields_str),
570-
fields.iter().map(|f| ::id_from_node_id(f.id, &self.save_ctxt)).collect())
575+
let value = format!("{} {{ {} }}", name, fields_str);
576+
(value, fields.iter().map(|f| ::id_from_node_id(f.id, &self.save_ctxt)).collect())
571577
} else {
572578
(String::new(), vec![])
573579
};

0 commit comments

Comments
 (0)