diff options
| author | bors <bors@rust-lang.org> | 2016-01-23 11:38:43 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2016-01-23 11:38:43 +0000 |
| commit | 1571c690f0a827d33f0901ef4c3e25cc004ef144 (patch) | |
| tree | ba091244b313ee6acbc0bebf6ee5101f0fec4f52 | |
| parent | 332e34524072abc213c65b98e8dbb81f2c5c912a (diff) | |
| parent | 5a26a52a54ae27e5a64bc17a17aa1eebab136b91 (diff) | |
| download | rust-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.rs | 39 |
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 { |
