From a3ccbdc90472345bc96fcb3142631a3d75ffb1ab Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 30 Sep 2013 11:44:25 -0700 Subject: [PATCH] rustdoc: Generate valid code for struct-variants Closes #9587 --- src/librustdoc/html/render.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 4702cb0f73d8..4ed91437628b 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -1050,7 +1050,7 @@ fn render_method(w: &mut io::Writer, meth: &clean::Item, withlink: bool) { fn item_struct(w: &mut io::Writer, it: &clean::Item, s: &clean::Struct) { write!(w, "
");
-    render_struct(w, it, Some(&s.generics), s.struct_type, s.fields, "");
+    render_struct(w, it, Some(&s.generics), s.struct_type, s.fields, "", true);
     write!(w, "
"); document(w, it); @@ -1082,8 +1082,10 @@ fn item_enum(w: &mut io::Writer, it: &clean::Item, e: &clean::Enum) { write!(w, "),\n"); } clean::StructVariant(ref s) => { + write!(w, " "); render_struct(w, v, None, s.struct_type, s.fields, - " "); + " ", false); + write!(w, ",\n"); } } } @@ -1102,9 +1104,11 @@ fn render_struct(w: &mut io::Writer, it: &clean::Item, g: Option<&clean::Generics>, ty: doctree::StructType, fields: &[clean::Item], - tab: &str) { - write!(w, "{}struct {}", + tab: &str, + structhead: bool) { + write!(w, "{}{}{}", VisSpace(it.visibility), + if structhead {"struct "} else {""}, it.name.get_ref().as_slice()); match g { Some(g) => write!(w, "{}", *g), @@ -1112,7 +1116,7 @@ fn render_struct(w: &mut io::Writer, it: &clean::Item, } match ty { doctree::Plain => { - write!(w, " \\{\n"); + write!(w, " \\{\n{}", tab); for field in fields.iter() { match field.inner { clean::StructFieldItem(ref ty) => {