Skip to content

Commit a3ccbdc

Browse files
committed
rustdoc: Generate valid code for struct-variants
Closes #9587
1 parent 8174618 commit a3ccbdc

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/librustdoc/html/render.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,7 +1050,7 @@ fn render_method(w: &mut io::Writer, meth: &clean::Item, withlink: bool) {
10501050

10511051
fn item_struct(w: &mut io::Writer, it: &clean::Item, s: &clean::Struct) {
10521052
write!(w, "<pre class='struct'>");
1053-
render_struct(w, it, Some(&s.generics), s.struct_type, s.fields, "");
1053+
render_struct(w, it, Some(&s.generics), s.struct_type, s.fields, "", true);
10541054
write!(w, "</pre>");
10551055

10561056
document(w, it);
@@ -1082,8 +1082,10 @@ fn item_enum(w: &mut io::Writer, it: &clean::Item, e: &clean::Enum) {
10821082
write!(w, "),\n");
10831083
}
10841084
clean::StructVariant(ref s) => {
1085+
write!(w, " ");
10851086
render_struct(w, v, None, s.struct_type, s.fields,
1086-
" ");
1087+
" ", false);
1088+
write!(w, ",\n");
10871089
}
10881090
}
10891091
}
@@ -1102,17 +1104,19 @@ fn render_struct(w: &mut io::Writer, it: &clean::Item,
11021104
g: Option<&clean::Generics>,
11031105
ty: doctree::StructType,
11041106
fields: &[clean::Item],
1105-
tab: &str) {
1106-
write!(w, "{}struct {}",
1107+
tab: &str,
1108+
structhead: bool) {
1109+
write!(w, "{}{}{}",
11071110
VisSpace(it.visibility),
1111+
if structhead {"struct "} else {""},
11081112
it.name.get_ref().as_slice());
11091113
match g {
11101114
Some(g) => write!(w, "{}", *g),
11111115
None => {}
11121116
}
11131117
match ty {
11141118
doctree::Plain => {
1115-
write!(w, " \\{\n");
1119+
write!(w, " \\{\n{}", tab);
11161120
for field in fields.iter() {
11171121
match field.inner {
11181122
clean::StructFieldItem(ref ty) => {

0 commit comments

Comments
 (0)