Skip to content

Commit

Permalink
Rollup merge of rust-lang#118600 - GuillaumeGomez:fields-heading, r=n…
Browse files Browse the repository at this point in the history
…otriddle

[rustdoc] Don't generate the "Fields" heading if there is no field displayed

Fixes rust-lang#118195.

If no field is displayed, we should not generate the `Fields` heading in enum struct variants.

r? `@notriddle`
  • Loading branch information
GuillaumeGomez authored Dec 4, 2023
2 parents 674d068 + 8e53edb commit 2d7b858
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/librustdoc/html/render/print_item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1737,7 +1737,14 @@ fn item_variants(
w.write_str("</h3></section>");

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.
Expand Down
18 changes: 18 additions & 0 deletions tests/rustdoc/enum-variant-fields-heading.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// This is a regression test for <https://github.com/rust-lang/rust/issues/118195>.
// 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 },
}
3 changes: 3 additions & 0 deletions tests/rustdoc/enum-variant-fields-heading.variants.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<div class="variants"><section id="variant.A" class="variant"><a href="#variant.A" class="anchor">&#167;</a><h3 class="code-header">A</h3></section><div class="docblock"><p>A variant with no fields</p>
</div><section id="variant.B" class="variant"><a href="#variant.B" class="anchor">&#167;</a><h3 class="code-header">B</h3></section><div class="docblock"><p>A variant with hidden fields</p>
</div></div>

0 comments on commit 2d7b858

Please sign in to comment.