rust/tests/rustdoc
bors beef07fe8f Auto merge of #113958 - lukas-code:doc-links, r=GuillaumeGomez,petrochenkov
fix intra-doc links on nested `use` and `extern crate` items

This PR fixes two rustdoc ICEs that happen if there are any intra-doc links on nested `use` or `extern crate` items, for example:
```rust
/// Re-export [`fmt`] and [`io`].
pub use std::{fmt, io}; // "nested" use = use with braces

/// Re-export [`std`].
pub extern crate std;
```

Nested use items were incorrectly considered private and therefore didn't have their intra-doc links resolved. I fixed this by always resolving intra-doc links for nested `use` items that are declared `pub`.

<details>

During AST->HIR lowering, nested `use` items are desugared like this:
```rust
pub use std::{}; // "list stem"
pub use std::fmt;
pub use std::io;
```
Each of these HIR nodes has it's own effective visibility and the list stem is always considered private.
To check the effective visibility of an AST node, the AST node is mapped to a HIR node with `Resolver::local_def_id`, which returns the (private) list stem for nested use items.

</details>

For `extern crate`, there was a hack in rustdoc that stored the `DefId` of the crate itself in the cleaned item, instead of the `DefId` of the `extern crate` item. This made rustdoc look at the resolved links of the extern crate's crate root instead of the `extern crate` item. I've removed this hack and instead translate the `DefId` in the appropriate places.

As as side effect of fixing `extern crate`, i've turned
```rust
#[doc(masked)]
extern crate self as _;
```
into a no-op instead of hiding all trait impls. Proper verification for `doc(masked)` is included as a bonus.

fixes https://github.com/rust-lang/rust/issues/113896
2023-07-25 01:35:53 +00:00
..
auxiliary Add rustdoc tests for lazy_type_alias 2023-06-21 13:45:00 +02:00
const-generics
deref rustdoc: fix weird margins between Deref impl items 2023-04-28 13:16:10 -07:00
duplicate_impls
generic-associated-types rustdoc: render the assoc ty body before the where-clause 2023-06-21 21:53:55 +02:00
inline_cross rustdoc: handle cross-crate RPITITs correctly 2023-07-22 12:20:17 +02:00
inline_local
intra-doc fix doc links on use items 2023-07-22 12:14:26 +02:00
intra-doc-crate
notable-trait
primitive
src-links
synthetic_auto
test_option_check
alias-reexport2.rs Add rustdoc tests for lazy_type_alias 2023-06-21 13:45:00 +02:00
alias-reexport.rs Correctly handle Weak type aliases in rustdoc 2023-06-21 15:34:42 +02:00
all.rs
anchors.no_const_anchor2.html rustdoc: use src consistently over source in code 2023-07-14 16:38:01 -07:00
anchors.no_const_anchor.html rustdoc: use src consistently over source in code 2023-07-14 16:38:01 -07:00
anchors.no_method_anchor.html rustdoc: use src consistently over source in code 2023-07-14 16:38:01 -07:00
anchors.no_trait_method_anchor.html rustdoc: use src consistently over source in code 2023-07-14 16:38:01 -07:00
anchors.no_tymethod_anchor.html rustdoc: use src consistently over source in code 2023-07-14 16:38:01 -07:00
anchors.no_type_anchor2.html Restore channel placeholder 2023-04-29 15:36:03 -04:00
anchors.no_type_anchor.html rustdoc: use src consistently over source in code 2023-07-14 16:38:01 -07:00
anchors.rs
anonymous-lifetime.rs
anonymous-reexport.rs
array-links.link_box_generic.html
array-links.link_box_u32.html
array-links.link_slice_generic.html
array-links.link_slice_u32.html
array-links.rs
asm-foreign2.rs
asm-foreign.rs
assoc-consts-version.rs
assoc-consts.rs rustdoc: re-elide cross-crate default trait object lifetime bounds 2023-06-07 13:29:36 +02:00
assoc-item-cast.rs
assoc-types.rs
associated-consts.rs
async-fn-opaque-item.rs
async-fn.rs
async-move-doctest.rs
async-trait-sig.rs
async-trait.rs
attribute-rendering.rs
attributes.rs
auto_aliases.rs
auto-impl-for-trait.rs
auto-impl-primitive.rs
auto-trait-not-send.rs
auto-traits.rs
bad-codeblock-syntax.rs
blanket-reexport-item.rs
bounds-in-multiple-parts.rs
cap-lints.rs
cfg_doc_reexport.rs
cfg-doctest.rs
check-source-code-urls-to-def-std.rs
check-source-code-urls-to-def.rs Update jump to def tests 2023-07-12 16:50:43 +02:00
check-styled-link.rs
check.rs
codeblock-title.rs
comment-in-doctest.rs
compiler-derive-proc-macro.rs Add test to ensure that compiler built-in proc-macro are considered as such 2023-04-13 20:35:05 +02:00
const-display.rs
const-doc.rs
const-fn.rs
const-intrinsic.rs
const-underscore.rs
const-value-display.rs
const.rs
constructor-imports.rs
crate-version-escape.rs
crate-version.rs
cross-crate-hidden-assoc-trait-items.rs
cross-crate-hidden-impl-parameter.rs
cross-crate-links.rs
cross-crate-primitive-doc.rs
decl_macro_priv.rs
decl_macro.rs
decl-line-wrapping-empty-arg-list.decl.html rustdoc: get rid of extra line when line-wrapping fn decls with empty arg list 2023-06-24 23:39:35 +02:00
decl-line-wrapping-empty-arg-list.rs rustdoc: get rid of extra line when line-wrapping fn decls with empty arg list 2023-06-24 23:39:35 +02:00
decl-trailing-whitespace.declaration.html
decl-trailing-whitespace.rs
deep-structures.rs
default-impl.rs
default-theme.rs
default-trait-method-link.rs
default-trait-method.rs Add tests for default unsafe trait methods 2023-06-24 23:14:57 -04:00
deprecated-future-staged-api.rs
deprecated-future.rs
deprecated-impls.rs
deprecated.rs
description_default.rs
description.rs
display-hidden-items.rs Add tests for --document-hidden-items option 2023-07-19 14:34:06 +02:00
doc_auto_cfg_nested_impl.rs
doc-assoc-item.rs
doc-auto-cfg.rs
doc-cfg-hide.rs
doc-cfg-implicit-gate.rs
doc-cfg-implicit.rs
doc-cfg-simplification.rs
doc-cfg-target-feature.rs
doc-cfg-traits.rs
doc-cfg.rs
doc-proc-macro.rs
doctest-manual-crate-name.rs
document-item-with-associated-const-in-where-clause.rs
double-hyphen-to-dash.rs Add rustdoc test for double-hyphen to dash doc comment conversion 2023-06-02 13:51:01 +02:00
double-quote-escape.rs
duplicate-cfg.rs
duplicate-flags.rs
duplicated_impl.rs
early-unindent.rs
edition-doctest.rs
edition-flag.rs
elided-lifetime.rs
empty-doc-comment.rs
empty-impl-block-private-with-doc.rs
empty-impl-block-private.rs
empty-impl-block.rs
empty-impls.rs
empty-mod-private.rs
empty-mod-public.rs
empty-section.rs
ensure-src-link.rs rustdoc: use src consistently over source in code 2023-07-14 16:38:01 -07:00
enum-headings.rs
extern-default-method.no_href_on_anchor.html
extern-default-method.rs
extern-html-root-url-precedence.rs
extern-html-root-url.rs
extern-impl-trait.rs
extern-impl.rs
extern-links.rs
extern-method.rs
external-cross.rs
external-doc.rs
external-macro-src.rs
feature-gate-doc_auto_cfg.rs
ffi.rs
files-creation-hidden.rs Add @files checks in rustdoc tests 2023-06-23 15:12:48 +02:00
files-creation-private.rs Add @files checks in rustdoc tests 2023-06-23 15:12:48 +02:00
fn-bound.rs
fn-pointer-arg-name.rs
fn-sidebar.rs
fn-type.rs
footnote-in-summary.rs
force-target-feature.rs
foreigntype-reexport.rs
foreigntype.rs
generic_const_exprs.rs
generic-impl.rs
glob-shadowing-const.rs
glob-shadowing.rs
hidden-impls.rs
hidden-line.rs
hidden-methods.rs
hidden-private.rs
hidden-trait-methods-with-document-hidden-items.rs
hidden-trait-methods.rs
hidden-trait-struct-impls.rs
hide-complex-unevaluated-const-arguments.rs fix library and rustdoc tests 2023-04-16 11:38:52 +00:00
hide-complex-unevaluated-consts.rs
hide-unstable-trait.rs
higher-ranked-trait-bounds.rs
impl-alias-substituted.rs Use proper impl self type for alias impl in rustdoc 2023-05-10 22:49:05 +00:00
impl-box.rs
impl-disambiguation.rs
impl-everywhere.rs
impl-in-const-block.rs
impl-parts-crosscrate.rs
impl-parts.rs
impl-trait-alias.rs
implementor-stable-version.rs
impossible-default.rs
include_str_cut.rs
index-page.rs
infinite-redirection.rs
inherent-projections.rs IAT: Rustdoc integration 2023-05-04 16:59:11 +02:00
inline-default-methods.rs
inline-private-with-intermediate-doc-hidden.rs Add regression test where private item with intermediate doc hidden re-export was not inlined 2023-06-01 18:35:00 +02:00
internal.rs
invalid.crate.name.rs
issue-12834.rs
issue-13698.rs
issue-15169.rs
issue-15318-2.rs
issue-15318-3.rs
issue-15318.rs
issue-15347.rs
issue-16019.rs
issue-16265-1.rs
issue-16265-2.rs
issue-17476.rs
issue-18199.rs
issue-19181.rs
issue-19190-2.rs
issue-19190-3.rs
issue-19190.rs
issue-20175.rs
issue-20646.rs
issue-20727-2.rs
issue-20727-3.rs
issue-20727-4.rs
issue-20727.rs
issue-21092.rs
issue-21474.rs
issue-21801.rs
issue-22025.rs
issue-22038.rs
issue-23106.rs
issue-23207.rs
issue-23511.rs
issue-23744.rs
issue-23812.rs
issue-25001.rs Bless rustdoc test with swapped ids 2023-04-05 15:59:29 +00:00
issue-25944.rs
issue-26606.rs
issue-26995.rs
issue-27104.rs
issue-27362.rs
issue-27759.rs
issue-27862.rs
issue-28478.rs
issue-28927.rs
issue-29449.rs
issue-29503.rs
issue-29584.rs
issue-30109.rs
issue-30252.rs
issue-30366.rs
issue-31808.rs
issue-31899.rs
issue-32374.rs
issue-32395.rs
issue-32556.rs
issue-32890.rs
issue-33069.rs
issue-33178-1.rs
issue-33178.rs fix doc links on extern crate items 2023-07-22 12:27:25 +02:00
issue-33302.rs
issue-33592.rs
issue-34025.rs
issue-34274.rs
issue-34423.rs
issue-34473.rs
issue-34928.rs
issue-35169-2.rs
issue-35169.rs
issue-35488.rs
issue-36031.rs
issue-38129.rs
issue-38219.rs
issue-40936.rs
issue-41783.codeblock.html
issue-41783.rs
issue-42760.rs
issue-43153.rs
issue-43701.rs
issue-43869.rs
issue-43893.rs
issue-45584.rs
issue-46271.rs
issue-46377.rs
issue-46380-2.rs
issue-46506-pub-reexport-of-pub-reexport.rs Add regression test for #46506 2023-04-20 17:49:13 +02:00
issue-46727.rs
issue-46766.rs
issue-46767.rs
issue-46976.rs
issue-47038.rs
issue-47197-blank-line-in-doc-block.rs
issue-47639.rs
issue-48377.rs
issue-48414.rs
issue-50159.rs
issue-51236.rs
issue-52873.rs
issue-53689.rs
issue-53812.rs
issue-54478-demo-allocator.rs
issue-54705.rs
issue-55001.rs
issue-55321.rs
issue-55364.rs
issue-56701.rs
issue-56822.rs
issue-57180.rs
issue-60482.rs
issue-60522-duplicated-glob-reexport.rs Add regression test for #60522 2023-04-24 13:12:24 +02:00
issue-60726.rs
issue-61592.rs
issue-67851-both.rs
issue-67851-hidden.rs
issue-67851-neither.rs
issue-67851-private.rs
issue-72340.rs
issue-73061-cross-crate-opaque-assoc-type.rs
issue-74083.rs
issue-75588.rs
issue-76501.rs
issue-78673.rs
issue-78701.rs
issue-79201.rs
issue-80233-normalize-auto-trait.rs
issue-82465-asref-for-and-of-local.rs
issue-83375-multiple-mods-w-same-name-doc-inline-last-item.rs
issue-83375-multiple-mods-w-same-name-doc-inline.rs
issue-85454.rs
issue-86620.rs
issue-88600.rs
issue-89309-heading-levels.rs
issue-89852.rs
issue-94183-blanket-impl-reexported-trait.rs Add regression test for #94183 2023-04-19 11:32:50 +02:00
issue-95633.rs
issue-95873.rs
issue-96381.rs
issue-98697.rs
issue-99221-multiple-macro-rules-w-same-name-submodule.rs
issue-99221-multiple-macro-rules-w-same-name.rs
issue-99221-multiple-structs-w-same-name.rs
issue-99734-multiple-foreigns-w-same-name.rs
issue-99734-multiple-mods-w-same-name.rs
issue-100204-inline-impl-through-glob-import.rs
issue-100241.rs
issue-100620.rs
issue-101743-bold-tag.rs
issue-102154.rs
issue-105735-overlapping-reexport-2.rs Add regression test for #105735 2023-07-18 10:41:16 +02:00
issue-105735-overlapping-reexport.rs Add regression test for #105735 2023-07-18 10:41:16 +02:00
issue-105952.rs
issue-106142.rs test(doc): no fallback marco resolution 2023-04-27 16:25:05 +08:00
issue-107350.rs
issue-107995.rs
issue-108231.rs
issue-108281.rs
issue-108679-reexport-of-reexport.rs
issue-108925.rs
issue-108931-anonymous-reexport.rs
issue-109258-missing-private-inlining.rs
issue-109449-doc-hidden-reexports.rs Add rustdoc test to ensure that #109449 is working as expected 2023-06-05 10:48:34 +02:00
issue-109695-crate-doc-hidden.rs
issue-110422-inner-private.rs Add regression tests for #110422 2023-04-17 20:27:34 +02:00
issue-110629-private-type-cycle.rs rustdoc: catch and don't blow up on impl Trait cycles 2023-04-29 16:53:02 -07:00
issue-111064-reexport-trait-from-hidden-2.rs Add @files checks in rustdoc tests 2023-06-23 15:12:48 +02:00
issue-111064-reexport-trait-from-hidden.rs Add regression test for #111064 2023-05-05 21:33:44 +02:00
issue-111249-file-creation.rs Add @files checks in rustdoc tests 2023-06-23 15:12:48 +02:00
issue-112515-impl-ty-alias.rs Add regression test for #112515 2023-06-12 11:35:19 +02:00
item-desc-list-at-start.item-table.html
item-desc-list-at-start.rs
jump-to-def-doc-links.rs Update jump to def tests 2023-07-12 16:50:43 +02:00
keyword.rs
legacy-const-generic.rs
lifetime-name.rs
line-breaks.rs
link-assoc-const.rs
link-title-escape.rs
local-reexport-doc.rs
logo-class-default.rs
logo-class.rs
macro_pub_in_module.rs Add test to ensure that compiler built-in proc-macro are considered as such 2023-04-13 20:35:05 +02:00
macro_rules-matchers.rs
macro-document-private-duplicate.rs
macro-document-private.rs
macro-generated-macro.macro_linebreak_pre.html
macro-generated-macro.macro_morestuff_pre.html
macro-generated-macro.rs
macro-higher-kinded-function.rs
macro-in-async-block.rs
macro-in-closure.rs
macro-indirect-use.rs
macro-private-not-documented.rs
macros.rs
manual_impl.rs
masked.rs
method-list.rs
mixing-doc-comments-and-attrs.rs
mixing-doc-comments-and-attrs.S1_top-doc.html
mixing-doc-comments-and-attrs.S2_top-doc.html
mixing-doc-comments-and-attrs.S3_top-doc.html
mod-stackoverflow.rs
module-impls.rs
multiple-import-levels.rs
must_implement_one_of.rs
mut-params.rs
namespaces.rs
negative-impl-sidebar.rs
negative-impl.rs
nested-items-issue-111415.rs Add regression test for #111415 2023-05-16 14:35:46 +02:00
nested-modules.rs
no_std-primitive.rs
no-compiler-reexport.rs
no-crate-filter.rs
no-run-still-checks-lints.rs
no-stack-overflow-25295.rs
no-unit-struct-field.rs
non_lifetime_binders.rs
normalize-assoc-item.rs
not-wf-ambiguous-normalization.rs
nul-error.rs
playground-arg.rs pass unused_extern_crates in librustdoc::doctest::make_test 2023-04-25 17:20:58 +03:00
playground-empty.rs
playground-none.rs
playground-syntax-error.rs
playground.rs
primitive-link.rs
primitive-reexport.rs
primitive-reference.rs
primitive-slice-auto-trait.rs
primitive-tuple-auto-trait.rs
primitive-tuple-variadic.rs
primitive-unit-auto-trait.rs
private-type-alias.rs
proc-macro.rs
process-termination.rs
pub-extern-crate.rs
pub-method.rs
pub-use-extern-macros.rs
range-arg-pattern.rs
raw-ident-eliminate-r-hashtag.rs
read-more-unneeded.rs
recursion1.rs
recursion2.rs
recursion3.rs
redirect-const.rs
redirect-map-empty.rs
redirect-map.rs
redirect-rename.rs
redirect.rs Add tests for invalid files generation 2023-06-21 15:21:32 +02:00
reexport-attr-merge.rs Update reexport-attr-merge rustdoc test 2023-06-03 19:57:17 +02:00
reexport-check.rs
reexport-dep-foreign-fn.rs
reexport-doc-hidden-inside-private.rs Add/improve code comments 2023-06-26 16:38:14 +02:00
reexport-doc-hidden.rs Update tests for re-exports of doc hidden macros 2023-05-26 17:31:54 +02:00
reexport-doc.rs
reexport-hidden-macro.rs Correctly handle multiple re-exports of bang macros at the same level 2023-05-27 00:25:37 +02:00
reexport-macro.rs
reexport-of-doc-hidden.rs Correctly handle multiple re-exports of bang macros at the same level 2023-05-27 00:25:37 +02:00
reexport-stability-tags-deprecated-and-portability.rs
reexport-stability-tags-unstable-and-portability.rs
reexports-of-same-name.rs
reexports-priv.rs
reexports.rs
remove-duplicates.rs
remove-url-from-headings.rs
return-impl-trait.rs
rfc-2632-const-trait-impl.rs fix library and rustdoc tests 2023-04-16 11:38:52 +00:00
rustc-incoherent-impls.rs
rustc-macro-crate.rs
safe-intrinsic.rs
same-crate-hidden-impl-parameter.rs
sanitizer-option.rs
search-index-summaries.rs
search-index.rs
short-docblock-codeblock.rs
short-docblock.rs
short-line.md
show-const-contents.rs
sidebar-all-page.rs
sidebar-items.rs
sidebar-link-generation.rs
sidebar-links-to-foreign-impl.rs
sized_trait.rs
slice-links.link_box_generic.html
slice-links.link_box_u32.html
slice-links.link_slice_generic.html
slice-links.link_slice_u32.html
slice-links.rs
smart-punct.rs
smoke.rs
sort-modules-by-appearance.rs
source-file.rs rustdoc: use src consistently over source in JavaScript 2023-07-14 16:54:14 -07:00
source-version-separator.rs
src-links-auto-impls.rs rustdoc: use src consistently over source in code 2023-07-14 16:38:01 -07:00
src-links-external.rs
src-links.rs
stability.rs
static-root-path.rs rustdoc: use src consistently over source in JavaScript 2023-07-14 16:54:14 -07:00
static.rs
strip-block-doc-comments-stars.docblock.html
strip-block-doc-comments-stars.rs
strip-enum-variant.no-not-shown.html
strip-enum-variant.rs
struct-arg-pattern.rs
struct-field.rs
struct-implementations-title.rs
structfields.rs
tab_title.rs
table-in-docblock.rs
task-lists.rs
test-lists.rs
test-parens.rs
test-strikethrough.rs rustdoc: add test for strikethrough with single tildes 2023-05-25 13:27:29 +00:00
thread-local-src.rs
titles.rs
toggle-item-contents.rs
toggle-method.rs
toggle-trait-fn.rs
trait_alias.rs
trait-alias-mention.rs
trait-impl-items-links-and-anchors.rs
trait-impl.rs
trait-self-link.rs
trait-src-link.rs
trait-visibility.rs
traits-in-bodies-private.rs
traits-in-bodies.rs
tuple-struct-fields-doc.rs
tuples.link1_i32.html
tuples.link1_t.html
tuples.link2_i32.html
tuples.link2_t.html
tuples.link2_tu.html
tuples.link_unit.html
tuples.rs
type-layout-flag-required.rs
type-layout.rs
typedef.rs
unindent.md
unindent.rs
union-fields-html.rs Add test to prevent regression for fields display 2023-06-21 17:42:53 +02:00
union.rs
unit-return.rs
universal-impl-trait.rs
unneeded-trait-implementations-title.rs
use-attr.rs
useless_lifetime_bound.rs
variadic.rs
version-separator-without-source.rs
viewpath-rename.rs
viewpath-self.rs
visibility.rs Add visibility tests for associated items 2023-04-29 16:19:57 -04:00
where-clause-order.rs
where-sized.rs
where.alpha_trait_decl.html Update existing snapshot and add more snapshots of where clause indentation 2023-06-22 17:39:23 +02:00
where.bravo_trait_decl.html Update existing snapshot and add more snapshots of where clause indentation 2023-06-22 17:39:23 +02:00
where.charlie_fn_decl.html Update existing snapshot and add more snapshots of where clause indentation 2023-06-22 17:39:23 +02:00
where.golf_type_alias_decl.html Update existing snapshot and add more snapshots of where clause indentation 2023-06-22 17:39:23 +02:00
where.rs Update existing snapshot and add more snapshots of where clause indentation 2023-06-22 17:39:23 +02:00
where.SWhere_Echo_impl.html Update existing snapshot and add more snapshots of where clause indentation 2023-06-22 17:39:23 +02:00
where.SWhere_Simd_item-decl.html Update existing snapshot and add more snapshots of where clause indentation 2023-06-22 17:39:23 +02:00
where.SWhere_TraitWhere_item-decl.html
whitespace-after-where-clause.enum2.html
whitespace-after-where-clause.enum.html
whitespace-after-where-clause.rs
whitespace-after-where-clause.struct2.html
whitespace-after-where-clause.struct.html
whitespace-after-where-clause.trait2.html
whitespace-after-where-clause.trait.html
whitespace-after-where-clause.union2.html
whitespace-after-where-clause.union.html
without-redirect.rs
wrapping.rs