diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index 717aeaa1fd3..24437c3a97f 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -259,8 +259,12 @@ impl<'self> DocFolder for Cache {
if self.parent_stack.len() == 0 {
None
} else {
- Some((Some(*self.parent_stack.last()),
- self.stack.as_slice()))
+ let last = self.parent_stack.last();
+ let amt = match self.paths.find(last) {
+ Some(&(_, "trait")) => self.stack.len() - 1,
+ Some(*) | None => self.stack.len(),
+ };
+ Some((Some(*last), self.stack.slice_to(amt)))
}
}
_ => Some((None, self.stack.as_slice()))