rustdoc-search: account for numeric disambiguators on impls
Fixes #128676
This commit is contained in:
parent
83e9b93c90
commit
3a183256ad
@ -390,13 +390,18 @@ function preLoadCss(cssUrl) {
|
||||
if (splitAt !== -1) {
|
||||
const implId = savedHash.slice(0, splitAt);
|
||||
const assocId = savedHash.slice(splitAt + 1);
|
||||
const implElem = document.getElementById(implId);
|
||||
if (implElem && implElem.parentElement.tagName === "SUMMARY" &&
|
||||
implElem.parentElement.parentElement.tagName === "DETAILS") {
|
||||
onEachLazy(implElem.parentElement.parentElement.querySelectorAll(
|
||||
const implElems = document.querySelectorAll(
|
||||
`details > summary > section[id^="${implId}"]`,
|
||||
);
|
||||
onEachLazy(implElems, implElem => {
|
||||
const numbered = /^(.+?)-([0-9]+)$/.exec(implElem.id);
|
||||
if (implElem.id !== implId && (!numbered || numbered[1] !== implId)) {
|
||||
return false;
|
||||
}
|
||||
return onEachLazy(implElem.parentElement.parentElement.querySelectorAll(
|
||||
`[id^="${assocId}"]`),
|
||||
item => {
|
||||
const numbered = /([^-]+)-([0-9]+)/.exec(item.id);
|
||||
const numbered = /^(.+?)-([0-9]+)$/.exec(item.id);
|
||||
if (item.id === assocId || (numbered && numbered[1] === assocId)) {
|
||||
openParentDetails(item);
|
||||
item.scrollIntoView();
|
||||
@ -404,10 +409,11 @@ function preLoadCss(cssUrl) {
|
||||
setTimeout(() => {
|
||||
window.location.replace("#" + item.id);
|
||||
}, 0);
|
||||
return true;
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -41,3 +41,24 @@ assert-document-property: ({
|
||||
"URL": "struct.ZyxwvutMethodDisambiguation.html#method.method_impl_disambiguation-1"
|
||||
}, ENDS_WITH)
|
||||
assert: "section:target"
|
||||
|
||||
// Checks that, if a type has two methods with the same name,
|
||||
// and if it has multiple inherent impl blocks, that the numeric
|
||||
// impl block's disambiguator is also acted upon.
|
||||
go-to: "file://" + |DOC_PATH| + "/lib2/index.html?search=MultiImplBlockStruct->bool"
|
||||
wait-for: "#search-tabs"
|
||||
assert-count: ("a.result-method", 1)
|
||||
assert-attribute: ("a.result-method", {
|
||||
"href": "../lib2/another_mod/struct.MultiImplBlockStruct.html#impl-MultiImplBlockStruct/method.second_fn"
|
||||
})
|
||||
click: "a.result-method"
|
||||
wait-for: "details:has(summary > #impl-MultiImplBlockStruct-1) > div section[id='method.second_fn']:target"
|
||||
|
||||
go-to: "file://" + |DOC_PATH| + "/lib2/index.html?search=MultiImplBlockStruct->u32"
|
||||
wait-for: "#search-tabs"
|
||||
assert-count: ("a.result-method", 1)
|
||||
assert-attribute: ("a.result-method", {
|
||||
"href": "../lib2/another_mod/struct.MultiImplBlockStruct.html#impl-MultiImplBlockTrait-for-MultiImplBlockStruct/method.second_fn"
|
||||
})
|
||||
click: "a.result-method"
|
||||
wait-for: "details:has(summary > #impl-MultiImplBlockTrait-for-MultiImplBlockStruct) > div section[id='method.second_fn-1']:target"
|
||||
|
@ -1 +1,19 @@
|
||||
pub fn tadam() {}
|
||||
pub struct MultiImplBlockStruct;
|
||||
|
||||
impl MultiImplBlockStruct {
|
||||
pub fn first_fn() {}
|
||||
}
|
||||
|
||||
impl MultiImplBlockStruct {
|
||||
pub fn second_fn(self) -> bool { true }
|
||||
}
|
||||
|
||||
pub trait MultiImplBlockTrait {
|
||||
fn first_fn();
|
||||
fn second_fn(self) -> u32;
|
||||
}
|
||||
|
||||
impl MultiImplBlockTrait for MultiImplBlockStruct {
|
||||
fn first_fn() {}
|
||||
fn second_fn(self) -> u32 { 1 }
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user