From 8d6cb18eb9eedd56f834b99d7f5f3b896d9a7533 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Mon, 9 May 2016 10:04:27 +0200 Subject: [PATCH] rustdoc: display field types together with names in detailed docs Fixes: #32024 --- src/librustdoc/html/render.rs | 32 ++++++++++++++++++++------------ src/test/rustdoc/structfields.rs | 20 ++++++++++++++++++-- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index a3200e69e3c42..6f734dfbdd56e 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -2247,18 +2247,22 @@ fn item_struct(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, }).peekable(); if let doctree::Plain = s.struct_type { if fields.peek().is_some() { - write!(w, "

Fields

\n")?; + write!(w, "

Fields

\n
")?; for field in fields { - write!(w, "
- ")?; + write!(w, "")?; } - write!(w, "
\ - {name}", + write!(w, "
\ + {name}", shortty = ItemType::StructField, stab = field.stability_class(), name = field.name.as_ref().unwrap())?; + if let clean::StructFieldItem(ref ty) = field.inner { + write!(w, ": {}
", ty)?; + } else { + write!(w, "
")?; + } document(w, cx, field)?; - write!(w, "
")?; + write!(w, "")?; } } render_assoc_items(w, cx, it, it.def_id, AssocItemRender::All) @@ -2336,18 +2340,22 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, } }); write!(w, "

Fields

\n - ")?; +
")?; for field in fields { - write!(w, "
")?; + write!(w, "")?; } - write!(w, "
\ - {f}", + write!(w, "
\ + {f}", shortty = ItemType::Variant, v = variant.name.as_ref().unwrap(), f = field.name.as_ref().unwrap())?; + if let clean::StructFieldItem(ref ty) = field.inner { + write!(w, ": {}
", ty)?; + } else { + write!(w, "
")?; + } document(w, cx, field)?; - write!(w, "
")?; + write!(w, "")?; } write!(w, "")?; render_stability_since(w, variant, it)?; diff --git a/src/test/rustdoc/structfields.rs b/src/test/rustdoc/structfields.rs index c4327f70728cb..86be43f47d33e 100644 --- a/src/test/rustdoc/structfields.rs +++ b/src/test/rustdoc/structfields.rs @@ -32,8 +32,8 @@ pub struct Bar { // @has structfields/enum.Qux.html pub enum Qux { Quz { - // @has - //pre "a: ()" - a: (), + // @has - //pre "a: Option>" + a: Option>, // @!has - //pre "b: ()" #[doc(hidden)] b: (), @@ -42,3 +42,19 @@ pub enum Qux { // @has - //pre "// some fields omitted" }, } + +pub struct FieldDoc { + // @has structfields/struct.FieldDoc.html '//dt[@id="structfield.a"]' "a: i32" + // @has - //dd "field a" + /// field a + pub a: i32, +} + +pub enum EnumFieldDoc { + E { + // @has structfields/enum.EnumFieldDoc.html '//dt[@id="variant.E.field.a"]' "a: i32" + // @has - //dd "field a" + /// field a + a: i32, + } +}