about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-09-30 11:44:25 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-09-30 12:32:04 -0700
commita3ccbdc90472345bc96fcb3142631a3d75ffb1ab (patch)
tree5c73223c50315b949cf25b380fe47c9f1fe13600 /src
parent8174618a05c44a9b90806aa7b848cb9b7ab62d25 (diff)
downloadrust-a3ccbdc90472345bc96fcb3142631a3d75ffb1ab.tar.gz
rust-a3ccbdc90472345bc96fcb3142631a3d75ffb1ab.zip
rustdoc: Generate valid code for struct-variants
Closes #9587
Diffstat (limited to 'src')
-rw-r--r--src/librustdoc/html/render.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index 4702cb0f73d..4ed91437628 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, "<pre class='struct'>");
-    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, "</pre>");
 
     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) => {