rustdoc: Stop ignoring dox on fields/variants

This is progress towards #9611
This commit is contained in:
Alex Crichton
2013-09-30 16:31:35 -07:00
parent fb259855dc
commit d505f70f6f

View File

@@ -1081,6 +1081,20 @@ fn item_struct(w: &mut io::Writer, it: &clean::Item, s: &clean::Struct) {
write!(w, "</pre>"); write!(w, "</pre>");
document(w, it); document(w, it);
match s.struct_type {
doctree::Plain => {
write!(w, "<h2 class='fields'>Fields</h2>\n<table>");
for field in s.fields.iter() {
write!(w, "<tr><td id='structfield.{name}'>\
<code>{name}</code></td><td>",
name = field.name.get_ref().as_slice());
document(w, field);
write!(w, "</td></tr>");
}
write!(w, "</table>");
}
_ => {}
}
render_methods(w, it); render_methods(w, it);
} }
@@ -1094,36 +1108,46 @@ fn item_enum(w: &mut io::Writer, it: &clean::Item, e: &clean::Enum) {
} else { } else {
write!(w, " \\{\n"); write!(w, " \\{\n");
for v in e.variants.iter() { for v in e.variants.iter() {
let name = format!("<a name='variant.{0}'>{0}</a>", write!(w, " ");
v.name.get_ref().as_slice()); let name = v.name.get_ref().as_slice();
match v.inner { match v.inner {
clean::VariantItem(ref var) => { clean::VariantItem(ref var) => {
match var.kind { match var.kind {
clean::CLikeVariant => write!(w, " {},\n", name), clean::CLikeVariant => write!(w, "{}", name),
clean::TupleVariant(ref tys) => { clean::TupleVariant(ref tys) => {
write!(w, " {}(", name); write!(w, "{}(", name);
for (i, ty) in tys.iter().enumerate() { for (i, ty) in tys.iter().enumerate() {
if i > 0 { write!(w, ", ") } if i > 0 { write!(w, ", ") }
write!(w, "{}", *ty); write!(w, "{}", *ty);
} }
write!(w, "),\n"); write!(w, ")");
} }
clean::StructVariant(ref s) => { clean::StructVariant(ref s) => {
write!(w, " ");
render_struct(w, v, None, s.struct_type, s.fields, render_struct(w, v, None, s.struct_type, s.fields,
" ", false); " ", false);
write!(w, ",\n");
} }
} }
} }
_ => unreachable!() _ => unreachable!()
} }
write!(w, ",\n");
} }
write!(w, "\\}"); write!(w, "\\}");
} }
write!(w, "</pre>"); write!(w, "</pre>");
document(w, it); document(w, it);
if e.variants.len() > 0 {
write!(w, "<h2 class='variants'>Variants</h2>\n<table>");
for variant in e.variants.iter() {
write!(w, "<tr><td id='variant.{name}'><code>{name}</code></td><td>",
name = variant.name.get_ref().as_slice());
document(w, variant);
write!(w, "</td></tr>");
}
write!(w, "</table>");
}
render_methods(w, it); render_methods(w, it);
} }
@@ -1147,12 +1171,11 @@ fn render_struct(w: &mut io::Writer, it: &clean::Item,
for field in fields.iter() { for field in fields.iter() {
match field.inner { match field.inner {
clean::StructFieldItem(ref ty) => { clean::StructFieldItem(ref ty) => {
write!(w, " {}<a name='structfield.{name}'>{name}</a>: \ write!(w, " {}{}: {},\n{}",
{},\n{}",
VisSpace(field.visibility), VisSpace(field.visibility),
field.name.get_ref().as_slice(),
ty.type_, ty.type_,
tab, tab);
name = field.name.get_ref().as_slice());
} }
_ => unreachable!() _ => unreachable!()
} }