Prefer visibility map parents that are not doc(hidden) first#99698
Prefer visibility map parents that are not doc(hidden) first#99698bors merged 2 commits intorust-lang:masterfrom
doc(hidden) first#99698Conversation
|
r? @cjgillot (rust-highfive has picked a reviewer for you, use r? to override) |
|
The best way to access the attributes on a |
not sure how hard this is in rustc_metadata, but rustdoc does it like so: rust/src/librustdoc/visit_ast.rs Lines 51 to 59 in e1d1848 |
…gillot Prefer visibility map parents that are not `doc(hidden)` first Far simpler approach to rust-lang#98876. This only fixes the case where the parent is `doc(hidden)`, not where the child is `doc(hidden)` since I don't know how to get the attrs on the import statement given a `ModChild`... I'll try to follow up with that, but this is a good first step.
Rollup of 8 pull requests Successful merges: - rust-lang#98583 (Stabilize Windows `FileTypeExt` with `is_symlink_dir` and `is_symlink_file`) - rust-lang#99698 (Prefer visibility map parents that are not `doc(hidden)` first) - rust-lang#99700 (Add a clickable link to the layout section) - rust-lang#99712 (passes: port more of `check_attr` module) - rust-lang#99759 (Remove dead code from cg_llvm) - rust-lang#99765 (Don't build std for *-uefi targets) - rust-lang#99771 (Update pulldown-cmark version to 0.9.2 (fixes url encoding for some chars)) - rust-lang#99775 (rustdoc: do not allocate String when writing path full name) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
|
@compiler-errors any chance that this contributed to the regression reported in #99792 (comment) ? |
|
Yes very likely. |
…-diagnostic-path, r=jackh726 Deprioritize doc(hidden) re-exports in diagnostic paths Fixes rust-lang#153477. This is the other half of rust-lang#99698, which fixed the case where the *parent module* is `#[doc(hidden)]` but left the case where the re-export itself is `#[doc(hidden)]` as a FIXME (with a tracking test in `dont-suggest-doc-hidden-variant-for-enum/hidden-child.rs`). The problem: when a crate does `#[doc(hidden)] pub use core::error::Error`, diagnostics pick up the hidden re-export path instead of the canonical one. For example, `snafu::Error` instead of `std::error::Error`. Two changes: In `visible_parent_map`, the `add_child` closure now checks whether the re-export itself is `#[doc(hidden)]` via `reexport_chain` and sends it to `fallback_map`, same treatment as doc-hidden parents and underscore re-exports. `should_encode_attrs` now returns `true` for `DefKind::Use`. Without this, `#[doc(hidden)]` on `use` items was never written to crate metadata, so `is_doc_hidden` always returned `false` cross-crate. This was the actual root cause, the check in `visible_parent_map` alone isn't enough if the attribute isn't in the metadata. The existing FIXME test now serves as the regression test. The `.stderr` goes from suggesting `hidden_child::__private::Some(1i32)` to just `Some(1i32)`. cc @eggyal
Rollup merge of #153630 - arferreira:fix-doc-hidden-reexport-diagnostic-path, r=jackh726 Deprioritize doc(hidden) re-exports in diagnostic paths Fixes #153477. This is the other half of #99698, which fixed the case where the *parent module* is `#[doc(hidden)]` but left the case where the re-export itself is `#[doc(hidden)]` as a FIXME (with a tracking test in `dont-suggest-doc-hidden-variant-for-enum/hidden-child.rs`). The problem: when a crate does `#[doc(hidden)] pub use core::error::Error`, diagnostics pick up the hidden re-export path instead of the canonical one. For example, `snafu::Error` instead of `std::error::Error`. Two changes: In `visible_parent_map`, the `add_child` closure now checks whether the re-export itself is `#[doc(hidden)]` via `reexport_chain` and sends it to `fallback_map`, same treatment as doc-hidden parents and underscore re-exports. `should_encode_attrs` now returns `true` for `DefKind::Use`. Without this, `#[doc(hidden)]` on `use` items was never written to crate metadata, so `is_doc_hidden` always returned `false` cross-crate. This was the actual root cause, the check in `visible_parent_map` alone isn't enough if the attribute isn't in the metadata. The existing FIXME test now serves as the regression test. The `.stderr` goes from suggesting `hidden_child::__private::Some(1i32)` to just `Some(1i32)`. cc @eggyal
Far simpler approach to #98876.
This only fixes the case where the parent is
doc(hidden), not where the child isdoc(hidden)since I don't know how to get the attrs on the import statement given aModChild... I'll try to follow up with that, but this is a good first step.