diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-01-13 08:11:17 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-13 08:11:17 +0100 |
| commit | 3e7bc08b6c591b2f70eecde18e299ff127b65cff (patch) | |
| tree | 0419f83f3957c41276ccb6027e08de7c0c186ddb /src/librustdoc/html | |
| parent | c7ada001ec10f7702d98af70d3b8dffabb990f5f (diff) | |
| parent | 4193f2da2d3553162af383dbeaf5f8ef5908dafd (diff) | |
| download | rust-3e7bc08b6c591b2f70eecde18e299ff127b65cff.tar.gz rust-3e7bc08b6c591b2f70eecde18e299ff127b65cff.zip | |
Rollup merge of #91687 - euclio:tuple-variant-field-section, r=GuillaumeGomez
rustdoc: do not emit tuple variant fields if none are documented Fixes #90824. Before:  After: 
Diffstat (limited to 'src/librustdoc/html')
| -rw-r--r-- | src/librustdoc/html/render/print_item.rs | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs index 11426cb6571..5431bd8565b 100644 --- a/src/librustdoc/html/render/print_item.rs +++ b/src/librustdoc/html/render/print_item.rs @@ -1126,18 +1126,27 @@ fn item_enum(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, e: &clean::Enum w.write_str("</h3>"); use crate::clean::Variant; - if let Some((extra, fields)) = match *variant.kind { - clean::VariantItem(Variant::Struct(ref s)) => Some(("", &s.fields)), - clean::VariantItem(Variant::Tuple(ref fields)) => Some(("Tuple ", fields)), + + let heading_and_fields = match &*variant.kind { + clean::VariantItem(Variant::Struct(s)) => Some(("Fields", &s.fields)), + // Documentation on tuple variant fields is rare, so to reduce noise we only emit + // the section if at least one field is documented. + clean::VariantItem(Variant::Tuple(fields)) + if fields.iter().any(|f| f.doc_value().is_some()) => + { + Some(("Tuple Fields", fields)) + } _ => None, - } { + }; + + if let Some((heading, fields)) = heading_and_fields { let variant_id = cx.derive_id(format!( "{}.{}.fields", ItemType::Variant, variant.name.as_ref().unwrap() )); write!(w, "<div class=\"sub-variant\" id=\"{id}\">", id = variant_id); - write!(w, "<h4>{extra}Fields</h4>", extra = extra,); + write!(w, "<h4>{heading}</h4>", heading = heading); document_non_exhaustive(w, variant); for field in fields { match *field.kind { |
