rustdoc: Don't print struct drop blocks

This commit is contained in:
Brian Anderson 2012-09-20 14:40:55 -07:00
parent 38595e6664
commit e0f5f25911

View File

@ -333,6 +333,7 @@ fn fold_struct(
sig: do astsrv::exec(srv) |ctxt| {
match ctxt.ast_map.get(doc.id()) {
ast_map::node_item(item, _) => {
let item = strip_struct_drop_block(item);
Some(pprust::item_to_str(item,
extract::interner()))
}
@ -343,12 +344,39 @@ fn fold_struct(
}
}
/// Removes the drop block from structs so that they aren't displayed
/// as part of the type
fn strip_struct_drop_block(item: @ast::item) -> @ast::item {
let node = match item.node {
ast::item_class(def, tys) => {
let def = @{
dtor: None,
.. *def
};
ast::item_class(def, tys)
}
_ => fail ~"not a struct"
};
@{
node: node,
.. *item
}
}
#[test]
fn should_add_struct_defs() {
let doc = test::mk_doc(~"struct S { field: () }");
assert doc.cratemod().structs()[0].sig.get().contains("struct S {");
}
#[test]
fn should_not_serialize_struct_drop_blocks() {
// All we care about are the fields
let doc = test::mk_doc(~"struct S { field: (), drop { } }");
assert !doc.cratemod().structs()[0].sig.get().contains("drop");
}
#[cfg(test)]
mod test {
fn mk_doc(source: ~str) -> doc::Doc {