1
Fork 0

Rollup merge of #134231 - notriddle:notriddle/mismatched-path, r=GuillaumeGomez

rustdoc-search: fix mismatched path when parent re-exported twice
This commit is contained in:
Matthias Krüger 2024-12-14 03:54:32 +01:00 committed by GitHub
commit 5b95be610e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 27 additions and 1 deletions

View file

@ -423,6 +423,14 @@ pub(crate) fn build_index(
} }
Some(path) Some(path)
}); });
} else if let Some(parent_idx) = item.parent_idx {
let i = <isize as TryInto<usize>>::try_into(parent_idx).unwrap();
item.path = {
let p = &crate_paths[i].1;
join_with_double_colon(&p[..p.len() - 1])
};
item.exact_path =
crate_paths[i].2.as_ref().map(|xp| join_with_double_colon(&xp[..xp.len() - 1]));
} }
// Omit the parent path if it is same to that of the prior item. // Omit the parent path if it is same to that of the prior item.

View file

@ -4,6 +4,6 @@
const EXPECTED = { const EXPECTED = {
'query': 'OsString -> String', 'query': 'OsString -> String',
'others': [ 'others': [
{ 'path': 'std::ffi::os_str::OsString', 'name': 'into_string' }, { 'path': 'std::ffi::OsString', 'name': 'into_string' },
] ]
}; };

View file

@ -14,4 +14,13 @@ const EXPECTED = [
{ 'path': 'reexport', 'name': 'AnotherOne' }, { 'path': 'reexport', 'name': 'AnotherOne' },
], ],
}, },
{
'query': 'fn:Equivalent::equivalent',
'others': [
// These results must never contain `reexport::equivalent::NotEquivalent`,
// since that path does not exist.
{ 'path': 'equivalent::Equivalent', 'name': 'equivalent' },
{ 'path': 'reexport::NotEquivalent', 'name': 'equivalent' },
],
},
]; ];

View file

@ -2,6 +2,15 @@
// This is a DWIM case, since renaming the export probably means the intent is also different. // This is a DWIM case, since renaming the export probably means the intent is also different.
// For the de-duplication case of exactly the same name, see reexport-dedup // For the de-duplication case of exactly the same name, see reexport-dedup
//@ aux-crate:equivalent=equivalent.rs
//@ compile-flags: --extern equivalent
//@ aux-build:equivalent.rs
//@ build-aux-docs
#[doc(inline)]
pub extern crate equivalent;
#[doc(inline)]
pub use equivalent::Equivalent as NotEquivalent;
pub mod fmt { pub mod fmt {
pub struct Subscriber; pub struct Subscriber;
} }