diff options
| author | Michael Howell <michael@notriddle.com> | 2024-08-06 07:36:12 -0700 |
|---|---|---|
| committer | Michael Howell <michael@notriddle.com> | 2024-08-06 07:36:12 -0700 |
| commit | 3a183256ad74eadc3c96ed337b70c1ad8897035f (patch) | |
| tree | 704d9de2ca75fcd795923ed10eb27f41759f3728 /src/librustdoc/html | |
| parent | 83e9b93c90bcd7f52d17d09b52e3a2eff707c46a (diff) | |
| download | rust-3a183256ad74eadc3c96ed337b70c1ad8897035f.tar.gz rust-3a183256ad74eadc3c96ed337b70c1ad8897035f.zip | |
rustdoc-search: account for numeric disambiguators on impls
Fixes #128676
Diffstat (limited to 'src/librustdoc/html')
| -rw-r--r-- | src/librustdoc/html/static/js/main.js | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/librustdoc/html/static/js/main.js b/src/librustdoc/html/static/js/main.js index 67731f35496..62fbde6f225 100644 --- a/src/librustdoc/html/static/js/main.js +++ b/src/librustdoc/html/static/js/main.js @@ -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; } }, ); - } + }); } } } |
