about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-09-27 10:45:09 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-09-27 10:45:09 -0700
commita925762c3b1c1f7b3a272b7294c0ec9b4eb4fb6d (patch)
tree3a21813dd7d6b8d1a9007498278ce8f2a872326b
parentc5e03bec4d1e7655fc0fd13922fbebb3001f6bac (diff)
downloadrust-a925762c3b1c1f7b3a272b7294c0ec9b4eb4fb6d.tar.gz
rust-a925762c3b1c1f7b3a272b7294c0ec9b4eb4fb6d.zip
rustdoc: Fix searching for default methods
Closes #9566
-rw-r--r--src/librustdoc/html/render.rs8
1 files changed, 6 insertions, 2 deletions
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()))