about summary refs log tree commit diff
path: root/src/librustdoc/html
diff options
context:
space:
mode:
authorOliver Middleton <olliemail27@gmail.com>2020-01-26 21:28:09 +0000
committerOliver Middleton <olliemail27@gmail.com>2020-01-26 21:32:43 +0000
commitbbc2ae7590ad53fca02fda187e7f9c2470c9e949 (patch)
tree81c7cf5218d27e6447126afb9a354798d3e0097b /src/librustdoc/html
parent80a65bcaf2f2b8a5c659b21b32b42bc300338a0e (diff)
downloadrust-bbc2ae7590ad53fca02fda187e7f9c2470c9e949.tar.gz
rust-bbc2ae7590ad53fca02fda187e7f9c2470c9e949.zip
rustdoc: Fix re-exporting primitive types
* Generate links to the primitive type docs for re-exports.
* Don't ICE on cross crate primitive type re-exports.
* Make primitive type re-exports show up cross crate.
Diffstat (limited to 'src/librustdoc/html')
-rw-r--r--src/librustdoc/html/format.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 79923fc3d36..c3313ba63ef 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -1171,11 +1171,14 @@ impl clean::ImportSource {
         display_fn(move |f| match self.did {
             Some(did) => resolved_path(f, did, &self.path, true, false),
             _ => {
-                for (i, seg) in self.path.segments.iter().enumerate() {
-                    if i > 0 {
-                        write!(f, "::")?
-                    }
-                    write!(f, "{}", seg.name)?;
+                for seg in &self.path.segments[..self.path.segments.len() - 1] {
+                    write!(f, "{}::", seg.name)?;
+                }
+                let name = self.path.last_name();
+                if let hir::def::Res::PrimTy(p) = self.path.res {
+                    primitive_link(f, PrimitiveType::from(p), name)?;
+                } else {
+                    write!(f, "{}", name)?;
                 }
                 Ok(())
             }