diff options
| author | Lukas Markeffsky <@> | 2023-07-21 23:10:07 +0200 |
|---|---|---|
| committer | Lukas Markeffsky <@> | 2023-07-22 12:27:25 +0200 |
| commit | bb98f3ad4d67db68292724d767a4fd41386c8d20 (patch) | |
| tree | 0d40e8285a3817ed7679d115763da74292fad957 /src/librustdoc/clean/utils.rs | |
| parent | 9ebd8095fad4ab1bc23717139402e6b3a834020a (diff) | |
| download | rust-bb98f3ad4d67db68292724d767a4fd41386c8d20.tar.gz rust-bb98f3ad4d67db68292724d767a4fd41386c8d20.zip | |
fix doc links on `extern crate` items
Diffstat (limited to 'src/librustdoc/clean/utils.rs')
| -rw-r--r-- | src/librustdoc/clean/utils.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/librustdoc/clean/utils.rs b/src/librustdoc/clean/utils.rs index df9da9e7c7f..5c8db3b8774 100644 --- a/src/librustdoc/clean/utils.rs +++ b/src/librustdoc/clean/utils.rs @@ -38,11 +38,15 @@ pub(crate) fn krate(cx: &mut DocContext<'_>) -> Crate { for it in &module.items { // `compiler_builtins` should be masked too, but we can't apply // `#[doc(masked)]` to the injected `extern crate` because it's unstable. - if it.is_extern_crate() - && (it.attrs.has_doc_flag(sym::masked) - || cx.tcx.is_compiler_builtins(it.item_id.krate())) - { + if cx.tcx.is_compiler_builtins(it.item_id.krate()) { cx.cache.masked_crates.insert(it.item_id.krate()); + } else if it.is_extern_crate() + && it.attrs.has_doc_flag(sym::masked) + && let Some(def_id) = it.item_id.as_def_id() + && let Some(local_def_id) = def_id.as_local() + && let Some(cnum) = cx.tcx.extern_mod_stmt_cnum(local_def_id) + { + cx.cache.masked_crates.insert(cnum); } } } |
