diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 2381895bda2f4..b0df209d3dc52 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -483,9 +483,17 @@ impl fmt::Display for clean::Type {
}
clean::Bottom => f.write_str("!"),
clean::RawPointer(m, ref t) => {
- try!(primitive_link(f, clean::PrimitiveType::PrimitiveRawPointer,
- &format!("*{}", RawMutableSpace(m))));
- write!(f, "{}", 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 {