rustdoc-search: fix mismatched path when parent re-exported twice
This commit is contained in:
parent
a94fce97e3
commit
8200c1e52e
3 changed files with 26 additions and 0 deletions
|
@ -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.
|
||||||
|
|
|
@ -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' },
|
||||||
|
],
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue