Rollup merge of #151255 - fix-rustdoc-ice-reexported-deprecated-note, r=lolbinarycat

rustdoc: Fix ICE when deprecated note is not resolved on the correct `DefId`

Supersedes https://github.com/rust-lang/rust/pull/151237.
Follow-up of rust-lang/rust#151120.

The `span` overlapping approach wasn't good enough so instead we now check if the reexport itself has the `deprecated` attribute, and if so, we resolve the path to the reexport `DefId`, otherwise we resolve it on the reexported item's `DefId`.

cc @Zalathar
r? @lolbinarycat
This commit is contained in:
Stuart Cook 2026-01-20 18:00:10 +11:00 committed by GitHub
commit 0a5d1e8059
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 62 additions and 7 deletions

View file

@ -0,0 +1,16 @@
// This test ensures that the intra-doc link from reexported deprecated attribute note
// are resolved where they are declared.
#![deny(rustdoc::broken_intra_doc_links)]
#[doc(inline)]
pub use bar::sql_function_proc as sql_function;
pub fn define_sql_function() {}
pub mod bar {
#[deprecated(note = "Use [`define_sql_function`] instead")]
//~^ ERROR: unresolved link
//~| ERROR: unresolved link
pub fn sql_function_proc() {}
}

View file

@ -0,0 +1,34 @@
error: unresolved link to `define_sql_function`
--> $DIR/deprecated-note-from-reexported.rs:12:25
|
LL | #[deprecated(note = "Use [`define_sql_function`] instead")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: the link appears in this line:
Use [`define_sql_function`] instead
^^^^^^^^^^^^^^^^^^^^^
= note: no item named `define_sql_function` in scope
= help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
note: the lint level is defined here
--> $DIR/deprecated-note-from-reexported.rs:4:9
|
LL | #![deny(rustdoc::broken_intra_doc_links)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: unresolved link to `define_sql_function`
--> $DIR/deprecated-note-from-reexported.rs:12:25
|
LL | #[deprecated(note = "Use [`define_sql_function`] instead")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: the link appears in this line:
Use [`define_sql_function`] instead
^^^^^^^^^^^^^^^^^^^^^
= note: no item named `define_sql_function` in scope
= help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error: aborting due to 2 previous errors