From e0f5f259115b2f45f7290fad48fd32b29ce7b8b7 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 20 Sep 2012 14:40:55 -0700 Subject: rustdoc: Don't print struct drop blocks --- src/rustdoc/tystr_pass.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/rustdoc') diff --git a/src/rustdoc/tystr_pass.rs b/src/rustdoc/tystr_pass.rs index 64c99e7abd2..e6582bd053e 100644 --- a/src/rustdoc/tystr_pass.rs +++ b/src/rustdoc/tystr_pass.rs @@ -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 { -- cgit 1.4.1-3-g733a5