diff options
| author | Corey Richardson <corey@octayn.net> | 2014-03-16 20:00:56 -0400 |
|---|---|---|
| committer | Corey Richardson <corey@octayn.net> | 2014-03-25 15:32:27 -0400 |
| commit | 1f937fa79e6f6a4d010b9d22b1370214c952fbfa (patch) | |
| tree | 6d4d710e6da25565e4608db7c7a087d566243625 | |
| parent | e88387a94709b3bf86c4abf39477be9ffa26c7e8 (diff) | |
| download | rust-1f937fa79e6f6a4d010b9d22b1370214c952fbfa.tar.gz rust-1f937fa79e6f6a4d010b9d22b1370214c952fbfa.zip | |
rustdoc: render derived impls separately
| -rw-r--r-- | src/librustdoc/clean.rs | 15 | ||||
| -rw-r--r-- | src/librustdoc/html/render.rs | 18 |
2 files changed, 30 insertions, 3 deletions
diff --git a/src/librustdoc/clean.rs b/src/librustdoc/clean.rs index bb6302b9fb7..0bc3da15462 100644 --- a/src/librustdoc/clean.rs +++ b/src/librustdoc/clean.rs @@ -1020,11 +1020,23 @@ pub struct Impl { generics: Generics, trait_: Option<Type>, for_: Type, - methods: Vec<Item> , + methods: Vec<Item>, + derived: bool, } impl Clean<Item> for doctree::Impl { fn clean(&self) -> Item { + let mut derived = false; + for attr in self.attrs.iter() { + match attr.node.value.node { + ast::MetaWord(ref s) => { + if s.get() == "automatically_derived" { + derived = true; + } + } + _ => {} + } + } Item { name: None, attrs: self.attrs.clean(), @@ -1036,6 +1048,7 @@ impl Clean<Item> for doctree::Impl { trait_: self.trait_.clean(), for_: self.for_.clean(), methods: self.methods.clean(), + derived: derived, }), } } diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 66b965633a0..0f4e1284e74 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -1517,8 +1517,22 @@ fn render_methods(w: &mut Writer, it: &clean::Item) -> fmt::Result { if traits.len() > 0 { try!(write!(w, "<h2 id='implementations'>Trait \ Implementations</h2>")); - for &(ref i, ref dox) in traits.move_iter() { - try!(render_impl(w, i, dox)); + let mut any_derived = false; + for & &(ref i, ref dox) in traits.iter() { + if !i.derived { + try!(render_impl(w, i, dox)); + } else { + any_derived = true; + } + } + if any_derived { + try!(write!(w, "<h3 id='derived_implementations'>Derived Implementations \ + </h3>")); + for &(ref i, ref dox) in traits.move_iter() { + if i.derived { + try!(render_impl(w, i, dox)); + } + } } } } |
