diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 1a4085e30e8f3..b0df209d3dc52 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 {