diff options
| author | Michael Howell <michael@notriddle.com> | 2024-04-18 21:30:39 -0700 |
|---|---|---|
| committer | Michael Howell <michael@notriddle.com> | 2024-04-19 14:31:21 -0700 |
| commit | 3c4e180e681e9c3e8c68de51585a1debd1f4bbdb (patch) | |
| tree | 82d9185548111479588b704b8fe4984d8b37fd7d /src/librustdoc/html/static | |
| parent | 8b47f6781792606fcf49724155bce4228e87be36 (diff) | |
| download | rust-3c4e180e681e9c3e8c68de51585a1debd1f4bbdb.tar.gz rust-3c4e180e681e9c3e8c68de51585a1debd1f4bbdb.zip | |
rustdoc-search: add parser for `&` syntax
Diffstat (limited to 'src/librustdoc/html/static')
| -rw-r--r-- | src/librustdoc/html/static/js/search.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js index 41a9897de6d..76a6fc9008e 100644 --- a/src/librustdoc/html/static/js/search.js +++ b/src/librustdoc/html/static/js/search.js @@ -786,6 +786,37 @@ function initSearch(rawSearchIndex) { } elems.push(makePrimitiveElement(name, { bindingName, generics })); } + } else if (parserState.userQuery[parserState.pos] === "&") { + if (parserState.typeFilter !== null && parserState.typeFilter !== "primitive") { + throw [ + "Invalid search type: primitive ", + "&", + " and ", + parserState.typeFilter, + " both specified", + ]; + } + parserState.typeFilter = null; + parserState.pos += 1; + let c = parserState.userQuery[parserState.pos]; + while (c === " " && parserState.pos < parserState.length) { + parserState.pos += 1; + c = parserState.userQuery[parserState.pos]; + } + const generics = []; + if (parserState.userQuery.slice(parserState.pos, parserState.pos + 3) === "mut") { + generics.push(makePrimitiveElement("mut", { typeFilter: "keyword"})); + parserState.pos += 3; + c = parserState.userQuery[parserState.pos]; + } + while (c === " " && parserState.pos < parserState.length) { + parserState.pos += 1; + c = parserState.userQuery[parserState.pos]; + } + if (!isEndCharacter(c) && parserState.pos < parserState.length) { + getFilteredNextElem(query, parserState, generics, isInGenerics); + } + elems.push(makePrimitiveElement("reference", { generics })); } else { const isStringElem = parserState.userQuery[start] === "\""; // We handle the strings on their own mostly to make code easier to follow. |
