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) {
|
if (splitAt !== -1) {
|
||||||
const implId = savedHash.slice(0, splitAt);
|
const implId = savedHash.slice(0, splitAt);
|
||||||
const assocId = savedHash.slice(splitAt + 1);
|
const assocId = savedHash.slice(splitAt + 1);
|
||||||
const implElem = document.getElementById(implId);
|
const implElems = document.querySelectorAll(
|
||||||
if (implElem && implElem.parentElement.tagName === "SUMMARY" &&
|
`details > summary > section[id^="${implId}"]`,
|
||||||
implElem.parentElement.parentElement.tagName === "DETAILS") {
|
);
|
||||||
onEachLazy(implElem.parentElement.parentElement.querySelectorAll(
|
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}"]`),
|
`[id^="${assocId}"]`),
|
||||||
item => {
|
item => {
|
||||||
const numbered = /([^-]+)-([0-9]+)/.exec(item.id);
|
const numbered = /^(.+?)-([0-9]+)$/.exec(item.id);
|
||||||
if (item.id === assocId || (numbered && numbered[1] === assocId)) {
|
if (item.id === assocId || (numbered && numbered[1] === assocId)) {
|
||||||
openParentDetails(item);
|
openParentDetails(item);
|
||||||
item.scrollIntoView();
|
item.scrollIntoView();
|
||||||
@ -404,10 +409,11 @@ function preLoadCss(cssUrl) {
|
|||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
window.location.replace("#" + item.id);
|
window.location.replace("#" + item.id);
|
||||||
}, 0);
|
}, 0);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,3 +41,24 @@ assert-document-property: ({
|
|||||||
"URL": "struct.ZyxwvutMethodDisambiguation.html#method.method_impl_disambiguation-1"
|
"URL": "struct.ZyxwvutMethodDisambiguation.html#method.method_impl_disambiguation-1"
|
||||||
}, ENDS_WITH)
|
}, ENDS_WITH)
|
||||||
assert: "section:target"
|
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…
x
Reference in New Issue
Block a user