Skip to content

Commit 4a0f088

Browse files
authored
Rollup merge of rust-lang#107951 - petrochenkov:procmacdoc, r=jackh726
resolve: Fix doc links referring to other crates when documenting proc macro crates directly Fixes rust-lang#107950
2 parents 4165de4 + efbf654 commit 4a0f088

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

compiler/rustc_resolve/src/late.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4211,7 +4211,8 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
42114211
if let Some(res) = res
42124212
&& let Some(def_id) = res.opt_def_id()
42134213
&& !def_id.is_local()
4214-
&& self.r.session.crate_types().contains(&CrateType::ProcMacro) {
4214+
&& self.r.session.crate_types().contains(&CrateType::ProcMacro)
4215+
&& matches!(self.r.session.opts.resolve_doc_links, ResolveDocLinks::ExportedMetadata) {
42154216
// Encoding foreign def ids in proc macro crate metadata will ICE.
42164217
return None;
42174218
}
@@ -4281,6 +4282,10 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
42814282
.filter_map(|tr| {
42824283
if !tr.def_id.is_local()
42834284
&& self.r.session.crate_types().contains(&CrateType::ProcMacro)
4285+
&& matches!(
4286+
self.r.session.opts.resolve_doc_links,
4287+
ResolveDocLinks::ExportedMetadata
4288+
)
42844289
{
42854290
// Encoding foreign def ids in proc macro crate metadata will ICE.
42864291
return None;
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// check-pass
2+
// force-host
3+
// no-prefer-dynamic
4+
// compile-flags: --crate-type proc-macro
5+
6+
#![deny(rustdoc::broken_intra_doc_links)]
7+
8+
extern crate proc_macro;
9+
use proc_macro::*;
10+
11+
/// [`Unpin`]
12+
#[proc_macro_derive(F)]
13+
pub fn derive_(t: proc_macro::TokenStream) -> proc_macro::TokenStream {
14+
t
15+
}
16+
17+
/// [`Vec`]
18+
#[proc_macro_attribute]
19+
pub fn attr(t: proc_macro::TokenStream, _: proc_macro::TokenStream) -> proc_macro::TokenStream {
20+
t
21+
}
22+
23+
/// [`std::fs::File`]
24+
#[proc_macro]
25+
pub fn func(t: proc_macro::TokenStream) -> proc_macro::TokenStream {
26+
t
27+
}

0 commit comments

Comments
 (0)