diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index e14be8ac6fda..d60fe3c03884 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -150,7 +150,7 @@ fn resolved_path(w: &mut fmt::Formatter, did: ast::DefId, p: &clean::Path, print_all: bool) -> fmt::Result { path(w, p, print_all, |cache, loc| { - if ast_util::is_local(did) { + if ast_util::is_local(did) || cache.paths.contains_key(&did) { Some(("../".repeat(loc.len())).to_strbuf()) } else { match *cache.extern_locations.get(&did.krate) { diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 93bd5249a2f7..6d6736eac3f3 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -797,6 +797,7 @@ impl DocFolder for Cache { // not a public item. let id = item.def_id.node; if !self.paths.contains_key(&item.def_id) || + !ast_util::is_local(item.def_id) || self.public_items.contains(&id) { self.paths.insert(item.def_id, (self.stack.clone(), shortty(&item)));