Skip to content

Commit 0a88249

Browse files
committed
add special formatting for displaying raw pointers in signatures
1 parent 50e78ec commit 0a88249

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

src/librustdoc/html/static/js/search.js

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -606,11 +606,12 @@ function getNextElem(query, parserState, elems, isInGenerics) {
606606
c = parserState.userQuery[parserState.pos];
607607
}
608608
const generics = [];
609-
if (parserState.userQuery.slice(parserState.pos, parserState.pos + 3) === "mut") {
609+
const pos = parserState.pos;
610+
if (parserState.userQuery.slice(pos, pos + 3) === "mut") {
610611
generics.push(makePrimitiveElement("mut", { typeFilter: "keyword" }));
611612
parserState.pos += 3;
612613
c = parserState.userQuery[parserState.pos];
613-
} else if (chr == "*" && parserState.userQuery.slice(parserState.pos, parserState.pos + 5) === "const") {
614+
} else if (chr == "*" && parserState.userQuery.slice(pos, pos + 5) === "const") {
614615
// make *const T parse the same as *T
615616
parserState.pos += 5;
616617
c = parserState.userQuery[parserState.pos];
@@ -623,7 +624,7 @@ function getNextElem(query, parserState, elems, isInGenerics) {
623624
getFilteredNextElem(query, parserState, generics, isInGenerics);
624625
}
625626
elems.push(makePrimitiveElement(name, { generics }));
626-
}
627+
};
627628

628629
skipWhitespace(parserState);
629630
let start = parserState.pos;
@@ -2324,6 +2325,25 @@ class DocSearch {
23242325
}, result),
23252326
);
23262327
return true;
2328+
} else if (fnType.id === this.typeNameIdOfPointer) {
2329+
pushText({ name: "*", highlighted: fnType.highlighted }, result);
2330+
if (fnType.generics.length < 2) {
2331+
pushText({ name: "const ", highlighted: fnType.highlighted }, result);
2332+
}
2333+
let prevHighlighted = false;
2334+
await onEachBtwnAsync(
2335+
fnType.generics,
2336+
async value => {
2337+
prevHighlighted = !!value.highlighted;
2338+
await writeFn(value, result);
2339+
},
2340+
// @ts-expect-error
2341+
value => pushText({
2342+
name: " ",
2343+
highlighted: prevHighlighted && value.highlighted,
2344+
}, result),
2345+
);
2346+
return true;
23272347
} else if (
23282348
fnType.id === this.typeNameIdOfFn ||
23292349
fnType.id === this.typeNameIdOfFnMut ||

0 commit comments

Comments
 (0)