about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-02-08 07:55:03 +0000
committerbors <bors@rust-lang.org>2024-02-08 07:55:03 +0000
commit81bef0b0ba78f9b7bb08beb0575e245fbe18674a (patch)
tree97e586f6391def75bf9c6158cbe53e735fbd17a7
parent870a01a30e45d73b8e922a91850919e03f772636 (diff)
parent0211221e9001314d54ece16e2634d51948f3ecb3 (diff)
downloadrust-81bef0b0ba78f9b7bb08beb0575e245fbe18674a.tar.gz
rust-81bef0b0ba78f9b7bb08beb0575e245fbe18674a.zip
Auto merge of #120579 - GuillaumeGomez:prevent-running-unneeded-code, r=notriddle
Prevent running some code if it is already in the map

I realized that a lot of duplicates were being run through this function. Might be better to prevent them from computing all the information if it's already in the cache.

r? `@notriddle`
-rw-r--r--src/librustdoc/clean/inline.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs
index aab974ad79e..f65c09bf0e8 100644
--- a/src/librustdoc/clean/inline.rs
+++ b/src/librustdoc/clean/inline.rs
@@ -196,6 +196,14 @@ pub(crate) fn load_attrs<'hir>(cx: &DocContext<'hir>, did: DefId) -> &'hir [ast:
 /// These names are used later on by HTML rendering to generate things like
 /// source links back to the original item.
 pub(crate) fn record_extern_fqn(cx: &mut DocContext<'_>, did: DefId, kind: ItemType) {
+    if did.is_local() {
+        if cx.cache.exact_paths.contains_key(&did) {
+            return;
+        }
+    } else if cx.cache.external_paths.contains_key(&did) {
+        return;
+    }
+
     let crate_name = cx.tcx.crate_name(did.krate);
 
     let relative =