diff options
| author | Dylan DPC <99973273+Dylan-DPC@users.noreply.github.com> | 2023-02-19 13:03:41 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-19 13:03:41 +0530 |
| commit | 4a0f088f7c0e2899c86c708ff9586c1b3fcbe203 (patch) | |
| tree | 4630a15debedb29c76a4c8037654376c38b7959b | |
| parent | 4165de40f894757026229b5220ad4867bed7a2ff (diff) | |
| parent | efbf6547cfeb579c0fbed4306086708d31f7a59d (diff) | |
Rollup merge of #107951 - petrochenkov:procmacdoc, r=jackh726
resolve: Fix doc links referring to other crates when documenting proc macro crates directly Fixes https://github.com/rust-lang/rust/issues/107950
| -rw-r--r-- | compiler/rustc_resolve/src/late.rs | 7 | ||||
| -rw-r--r-- | tests/rustdoc-ui/intra-doc/proc-macro-doc.rs | 27 |
2 files changed, 33 insertions, 1 deletions
diff --git a/compiler/rustc_resolve/src/late.rs b/compiler/rustc_resolve/src/late.rs index 324de7461cd..162f91e05f8 100644 --- a/compiler/rustc_resolve/src/late.rs +++ b/compiler/rustc_resolve/src/late.rs @@ -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; } @@ -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; diff --git a/tests/rustdoc-ui/intra-doc/proc-macro-doc.rs b/tests/rustdoc-ui/intra-doc/proc-macro-doc.rs new file mode 100644 index 00000000000..8335fc902cc --- /dev/null +++ b/tests/rustdoc-ui/intra-doc/proc-macro-doc.rs @@ -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 +} |
