diff options
| author | Ralf Jung <post@ralfj.de> | 2023-02-15 10:44:40 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2023-02-15 10:44:40 +0100 |
| commit | 1a2908bfaa4e8283b08aa3c29ff41515f247e322 (patch) | |
| tree | ba0769c8b2e29eb20b5f935fba4567c73e4ec0b9 /src/librustdoc/html/format.rs | |
| parent | f407e96b263e5ce71cde4bf93ad1865119ea45ad (diff) | |
| parent | 90f642bb3d74ee0ba8e0faf967748f36ff78d572 (diff) | |
Merge from rustc
Diffstat (limited to 'src/librustdoc/html/format.rs')
| -rw-r--r-- | src/librustdoc/html/format.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index 8a7a8ea5fd1..314f0612249 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -34,6 +34,7 @@ use crate::clean::{ use crate::formats::item_type::ItemType; use crate::html::escape::Escape; use crate::html::render::Context; +use crate::passes::collect_intra_doc_links::UrlFragment; use super::url_parts_builder::estimate_item_path_byte_length; use super::url_parts_builder::UrlPartsBuilder; @@ -768,6 +769,21 @@ pub(crate) fn href_relative_parts<'fqp>( } } +pub(crate) fn link_tooltip(did: DefId, fragment: &Option<UrlFragment>, cx: &Context<'_>) -> String { + let cache = cx.cache(); + let Some((fqp, shortty)) = cache.paths.get(&did) + .or_else(|| cache.external_paths.get(&did)) + else { return String::new() }; + let fqp = fqp.iter().map(|sym| sym.as_str()).join("::"); + if let &Some(UrlFragment::Item(id)) = fragment { + let name = cx.tcx().item_name(id); + let descr = cx.tcx().def_kind(id).descr(id); + format!("{descr} {fqp}::{name}") + } else { + format!("{shortty} {fqp}") + } +} + /// Used to render a [`clean::Path`]. fn resolved_path<'cx>( w: &mut fmt::Formatter<'_>, |
