Skip to content

Commit efbf654

Browse files
committed
resolve: Fix doc links referring to other crates when documenting proc macro crates directly
1 parent 00cf19a commit efbf654

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
@@ -4206,7 +4206,8 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
42064206
if let Some(res) = res
42074207
&& let Some(def_id) = res.opt_def_id()
42084208
&& !def_id.is_local()
4209-
&& self.r.session.crate_types().contains(&CrateType::ProcMacro) {
4209+
&& self.r.session.crate_types().contains(&CrateType::ProcMacro)
4210+
&& matches!(self.r.session.opts.resolve_doc_links, ResolveDocLinks::ExportedMetadata) {
42104211
// Encoding foreign def ids in proc macro crate metadata will ICE.
42114212
return None;
42124213
}
@@ -4276,6 +4277,10 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
42764277
.filter_map(|tr| {
42774278
if !tr.def_id.is_local()
42784279
&& self.r.session.crate_types().contains(&CrateType::ProcMacro)
4280+
&& matches!(
4281+
self.r.session.opts.resolve_doc_links,
4282+
ResolveDocLinks::ExportedMetadata
4283+
)
42794284
{
42804285
// Encoding foreign def ids in proc macro crate metadata will ICE.
42814286
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)