Skip to content

Commit

Permalink
Rollup merge of #107951 - petrochenkov:procmacdoc, r=jackh726
Browse files Browse the repository at this point in the history
resolve: Fix doc links referring to other crates when documenting proc macro crates directly

Fixes #107950
  • Loading branch information
Dylan-DPC authored Feb 19, 2023
2 parents 4165de4 + efbf654 commit 4a0f088
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
7 changes: 6 additions & 1 deletion compiler/rustc_resolve/src/late.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4211,7 +4211,8 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
if let Some(res) = res
&& let Some(def_id) = res.opt_def_id()
&& !def_id.is_local()
&& self.r.session.crate_types().contains(&CrateType::ProcMacro) {
&& self.r.session.crate_types().contains(&CrateType::ProcMacro)
&& matches!(self.r.session.opts.resolve_doc_links, ResolveDocLinks::ExportedMetadata) {
// Encoding foreign def ids in proc macro crate metadata will ICE.
return None;
}
Expand Down Expand Up @@ -4281,6 +4282,10 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
.filter_map(|tr| {
if !tr.def_id.is_local()
&& self.r.session.crate_types().contains(&CrateType::ProcMacro)
&& matches!(
self.r.session.opts.resolve_doc_links,
ResolveDocLinks::ExportedMetadata
)
{
// Encoding foreign def ids in proc macro crate metadata will ICE.
return None;
Expand Down
27 changes: 27 additions & 0 deletions tests/rustdoc-ui/intra-doc/proc-macro-doc.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// check-pass
// force-host
// no-prefer-dynamic
// compile-flags: --crate-type proc-macro

#![deny(rustdoc::broken_intra_doc_links)]

extern crate proc_macro;
use proc_macro::*;

/// [`Unpin`]
#[proc_macro_derive(F)]
pub fn derive_(t: proc_macro::TokenStream) -> proc_macro::TokenStream {
t
}

/// [`Vec`]
#[proc_macro_attribute]
pub fn attr(t: proc_macro::TokenStream, _: proc_macro::TokenStream) -> proc_macro::TokenStream {
t
}

/// [`std::fs::File`]
#[proc_macro]
pub fn func(t: proc_macro::TokenStream) -> proc_macro::TokenStream {
t
}

0 comments on commit 4a0f088

Please sign in to comment.