about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorTom Jakubowski <tom@crystae.net>2015-02-06 02:02:59 -0800
committerTom Jakubowski <tom@crystae.net>2015-02-06 03:22:29 -0800
commitdf1cfde253eb770dd7b3333cfc1dce7f59faac63 (patch)
tree66cf24415cd31ee821f4cb34f83debcafb2cca92 /src
parentabae840f450c6f2b38f6ebf83cfcf1a7928138b7 (diff)
downloadrust-df1cfde253eb770dd7b3333cfc1dce7f59faac63.tar.gz
rust-df1cfde253eb770dd7b3333cfc1dce7f59faac63.zip
Print full Type::ResolvedPaths starting with Self
(e.g., `Self::Output`)

This doesn't actually "resugar" qualified paths like `<Self as
Foo>::Output`, it just doesn't elide the prefix segments when rendering
cleaned paths like `Self::Output`.

cc #21145
Diffstat (limited to 'src')
-rw-r--r--src/librustdoc/html/format.rs3
-rw-r--r--src/test/run-make/rustdoc-assoc-types/Makefile5
-rw-r--r--src/test/run-make/rustdoc-assoc-types/lib.rs20
3 files changed, 27 insertions, 1 deletions
diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 7a6157b63b5..cc2cf21095e 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 00000000000..74fca83f5f9
--- /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 00000000000..3e6e0ad5600
--- /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 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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<I: ?Sized> {
+    // @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;
+}