From 1c556bbed4a02a914c152c96c18c04835338ba83 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 4 Dec 2023 12:12:13 +0100 Subject: [PATCH 1/2] Don't generate the "Fields" heading if there is no field displayed --- src/librustdoc/html/render/print_item.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs index 131b1d608e683..ff7ce01e807c4 100644 --- a/src/librustdoc/html/render/print_item.rs +++ b/src/librustdoc/html/render/print_item.rs @@ -1737,7 +1737,14 @@ fn item_variants( w.write_str(""); let heading_and_fields = match &variant_data.kind { - clean::VariantKind::Struct(s) => Some(("Fields", &s.fields)), + clean::VariantKind::Struct(s) => { + // If there is no field to display, no need to add the heading. + if s.fields.iter().any(|f| !f.is_doc_hidden()) { + Some(("Fields", &s.fields)) + } else { + None + } + } clean::VariantKind::Tuple(fields) => { // Documentation on tuple variant fields is rare, so to reduce noise we only emit // the section if at least one field is documented. From 8e53edb2ece6cc6ab6715fef5b3332ae8ffee8a2 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 4 Dec 2023 12:13:24 +0100 Subject: [PATCH 2/2] Add regression test for #118195 --- tests/rustdoc/enum-variant-fields-heading.rs | 18 ++++++++++++++++++ .../enum-variant-fields-heading.variants.html | 3 +++ 2 files changed, 21 insertions(+) create mode 100644 tests/rustdoc/enum-variant-fields-heading.rs create mode 100644 tests/rustdoc/enum-variant-fields-heading.variants.html diff --git a/tests/rustdoc/enum-variant-fields-heading.rs b/tests/rustdoc/enum-variant-fields-heading.rs new file mode 100644 index 0000000000000..8a7c99a87359e --- /dev/null +++ b/tests/rustdoc/enum-variant-fields-heading.rs @@ -0,0 +1,18 @@ +// This is a regression test for . +// It ensures that the "Fields" heading is not generated if no field is displayed. + +#![crate_name = "foo"] + +// @has 'foo/enum.Foo.html' +// @has - '//*[@id="variant.A"]' 'A' +// @count - '//*[@id="variant.A.fields"]' 0 +// @has - '//*[@id="variant.B"]' 'B' +// @count - '//*[@id="variant.B.fields"]' 0 +// @snapshot variants - '//*[@id="main-content"]/*[@class="variants"]' + +pub enum Foo { + /// A variant with no fields + A {}, + /// A variant with hidden fields + B { #[doc(hidden)] a: u8 }, +} diff --git a/tests/rustdoc/enum-variant-fields-heading.variants.html b/tests/rustdoc/enum-variant-fields-heading.variants.html new file mode 100644 index 0000000000000..bcb36f7cf86f6 --- /dev/null +++ b/tests/rustdoc/enum-variant-fields-heading.variants.html @@ -0,0 +1,3 @@ +
§

A

A variant with no fields

+
§

B

A variant with hidden fields

+
\ No newline at end of file