diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 7a6157b63b5b0..cc2cf21095e41 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -460,7 +460,8 @@ impl fmt::Display for clean::Type {
f.write_str(name)
}
clean::ResolvedPath{ did, ref typarams, ref path } => {
- try!(resolved_path(f, did, path, false));
+ // Paths like Self::Output should be rendered with all segments
+ try!(resolved_path(f, did, path, path.segments[0].name == "Self"));
tybounds(f, typarams)
}
clean::Infer => write!(f, "_"),
diff --git a/src/test/run-make/rustdoc-assoc-types/Makefile b/src/test/run-make/rustdoc-assoc-types/Makefile
new file mode 100644
index 0000000000000..74fca83f5f915
--- /dev/null
+++ b/src/test/run-make/rustdoc-assoc-types/Makefile
@@ -0,0 +1,5 @@
+-include ../tools.mk
+
+all: lib.rs
+ $(HOST_RPATH_ENV) $(RUSTDOC) -w html -o $(TMPDIR)/doc lib.rs
+ $(HTMLDOCCK) $(TMPDIR)/doc lib.rs
diff --git a/src/test/run-make/rustdoc-assoc-types/lib.rs b/src/test/run-make/rustdoc-assoc-types/lib.rs
new file mode 100644
index 0000000000000..3e6e0ad560072
--- /dev/null
+++ b/src/test/run-make/rustdoc-assoc-types/lib.rs
@@ -0,0 +1,20 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 or the MIT license
+// , at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![crate_type="lib"]
+
+// @has lib/trait.Index.html
+pub trait Index {
+ // @has - '//*[@id="associatedtype.Output"]//code' 'type Output: ?Sized'
+ type Output: ?Sized;
+ // @has - '//*[@id="tymethod.index"]//code' \
+ // "fn index<'a>(&'a self, index: I) -> &'a Self::Output"
+ fn index<'a>(&'a self, index: I) -> &'a Self::Output;
+}