diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs index 2618ec272ca5a..b86a2c94697f8 100644 --- a/src/librustdoc/html/render/print_item.rs +++ b/src/librustdoc/html/render/print_item.rs @@ -1460,6 +1460,13 @@ impl<'a, 'cx: 'a> ItemUnion<'a, 'cx> { ) } + fn print_field_attrs(&self, field: &'a clean::Item) -> impl Display { + fmt::from_fn(move |w| { + render_attributes_in_code(w, field, "", self.cx); + Ok(()) + }) + } + fn document_field(&self, field: &'a clean::Item) -> impl Display { document(self.cx, field, Some(self.it), HeadingOffset::H3) } @@ -1770,6 +1777,7 @@ fn item_variants( ) .maybe_display() )?; + render_attributes_in_code(w, variant, "", cx); if let clean::VariantItem(ref var) = variant.kind && let clean::VariantKind::CLike = var.kind { @@ -1843,7 +1851,12 @@ fn item_variants( "
{f}: {t}\
+ "
+ )?;
+ render_attributes_in_code(w, field, "", cx);
+ write!(
+ w,
+ "{f}: {t}\
\
{doc}\
{field_name}: {ty}\
+ ",
+ item_type = ItemType::StructField,
+ )?;
+ render_attributes_in_code(w, field, "", cx);
+ write!(
+ w,
+ "{field_name}: {ty}\
\
{doc}",
- item_type = ItemType::StructField,
ty = ty.print(cx),
doc = document(cx, field, Some(it), HeadingOffset::H3),
)?;
diff --git a/src/librustdoc/html/templates/item_union.html b/src/librustdoc/html/templates/item_union.html
index 5dba43ca255c7..171e079ed13f1 100644
--- a/src/librustdoc/html/templates/item_union.html
+++ b/src/librustdoc/html/templates/item_union.html
@@ -12,7 +12,7 @@ {{ name }}: {{+ self.print_ty(ty)|safe }} {# #}
+ {{+ self.print_field_attrs(field)|safe }}{{ name }}: {{+ self.print_ty(ty)|safe }} {# #}
{% if let Some(stability_class) = self.stability_field(field) %}
diff --git a/tests/rustdoc/attributes.rs b/tests/rustdoc/attributes.rs
index db5f89ed46e4a..33e4e31bec6e3 100644
--- a/tests/rustdoc/attributes.rs
+++ b/tests/rustdoc/attributes.rs
@@ -28,12 +28,15 @@ macro_rules! macro_rule {
#[unsafe(link_section = "enum")]
pub enum Enum {
//@ has 'foo/enum.Enum.html' '//*[@class="code-attribute"]' '#[unsafe(link_section = "a")]'
+ //@ has - '//*[@class="variants"]//*[@class="code-attribute"]' '#[unsafe(link_section = "a")]'
#[unsafe(link_section = "a")]
A,
//@ has 'foo/enum.Enum.html' '//*[@class="code-attribute"]' '#[unsafe(link_section = "quz")]'
+ //@ has - '//*[@class="variants"]//*[@class="code-attribute"]' '#[unsafe(link_section = "quz")]'
#[unsafe(link_section = "quz")]
Quz {
//@ has 'foo/enum.Enum.html' '//*[@class="code-attribute"]' '#[unsafe(link_section = "b")]'
+ //@ has - '//*[@class="variants"]//*[@class="code-attribute"]' '#[unsafe(link_section = "b")]'
#[unsafe(link_section = "b")]
b: (),
},
@@ -66,6 +69,7 @@ pub union Union {
#[unsafe(link_section = "struct")]
pub struct Struct {
//@ has 'foo/struct.Struct.html' '//*[@class="code-attribute"]' '#[unsafe(link_section = "x")]'
+ //@ has - '//*[@id="structfield.x"]//*[@class="code-attribute"]' '#[unsafe(link_section = "x")]'
#[unsafe(link_section = "x")]
pub x: u32,
y: f32,