about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2016-01-23 11:38:43 +0000
committerbors <bors@rust-lang.org>2016-01-23 11:38:43 +0000
commit1571c690f0a827d33f0901ef4c3e25cc004ef144 (patch)
treeba091244b313ee6acbc0bebf6ee5101f0fec4f52
parent332e34524072abc213c65b98e8dbb81f2c5c912a (diff)
parent5a26a52a54ae27e5a64bc17a17aa1eebab136b91 (diff)
downloadrust-1571c690f0a827d33f0901ef4c3e25cc004ef144.tar.gz
rust-1571c690f0a827d33f0901ef4c3e25cc004ef144.zip
Auto merge of #31121 - Manishearth:prim-link, r=alexcrichton
We currently nest `<a>` tags which is doubleplusungood. So, for example, `(u8, u8)` will show up
with the left paren linked to the tuple primitive page, and the right paren unlinked, which looks ugly.
-rw-r--r--src/librustdoc/html/format.rs39
1 files changed, 30 insertions, 9 deletions
diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 1a4085e30e8..b0df209d3dc 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -456,23 +456,44 @@ impl fmt::Display for clean::Type {
                        decl.decl)
             }
             clean::Tuple(ref typs) => {
-                primitive_link(f, clean::PrimitiveTuple,
-                               &*match &**typs {
-                                    [ref one] => format!("({},)", one),
-                                    many => format!("({})", CommaSep(&many)),
-                               })
+                match &**typs {
+                    [] => primitive_link(f, clean::PrimitiveTuple, "()"),
+                    [ref one] => {
+                        try!(primitive_link(f, clean::PrimitiveTuple, "("));
+                        try!(write!(f, "{}", one));
+                        primitive_link(f, clean::PrimitiveTuple, ")")
+                    }
+                    many => {
+                        try!(primitive_link(f, clean::PrimitiveTuple, "("));
+                        try!(write!(f, "{}", CommaSep(&many)));
+                        primitive_link(f, clean::PrimitiveTuple, ")")
+                    }
+                }
             }
             clean::Vector(ref t) => {
-                primitive_link(f, clean::Slice, &format!("[{}]", **t))
+                try!(primitive_link(f, clean::Slice, &format!("[")));
+                try!(write!(f, "{}", t));
+                primitive_link(f, clean::Slice, &format!("]"))
             }
             clean::FixedVector(ref t, ref s) => {
+                try!(primitive_link(f, clean::PrimitiveType::Array, "["));
+                try!(write!(f, "{}", t));
                 primitive_link(f, clean::PrimitiveType::Array,
-                               &format!("[{}; {}]", **t, *s))
+                               &format!("; {}]", *s))
             }
             clean::Bottom => f.write_str("!"),
             clean::RawPointer(m, ref t) => {
-                primitive_link(f, clean::PrimitiveType::PrimitiveRawPointer,
-                               &format!("*{}{}", RawMutableSpace(m), **t))
+                match **t {
+                    clean::Generic(_) | clean::ResolvedPath {is_generic: true, ..} => {
+                        primitive_link(f, clean::PrimitiveType::PrimitiveRawPointer,
+                                       &format!("*{}{}", RawMutableSpace(m), t))
+                    }
+                    _ => {
+                        try!(primitive_link(f, clean::PrimitiveType::PrimitiveRawPointer,
+                                            &format!("*{}", RawMutableSpace(m))));
+                        write!(f, "{}", t)
+                    }
+                }
             }
             clean::BorrowedRef{ lifetime: ref l, mutability, type_: ref ty} => {
                 let lt = match *l {