Skip to content

Commit a8c0b3b

Browse files
committed
rustdoc search: increase strictness of typechecking
1 parent 617aad8 commit a8c0b3b

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/librustdoc/html/static/js/rustdoc.d.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,18 +123,24 @@ declare namespace rustdoc {
123123
* Same as QueryElement, but bindings and typeFilter support strings
124124
*/
125125
interface ParserQueryElement {
126-
name: string,
126+
name: string|null,
127127
id: number|null,
128128
fullPath: Array<string>,
129129
pathWithoutLast: Array<string>,
130130
pathLast: string,
131131
normalizedPathLast: string,
132132
generics: Array<ParserQueryElement>,
133133
bindings: Map<string, Array<ParserQueryElement>>,
134-
bindingName: {name: string, generics: ParserQueryElement[]}|null,
134+
bindingName: {name: string|null, generics: ParserQueryElement[]}|null,
135135
typeFilter: string|null,
136136
}
137137

138+
/**
139+
* Same as ParserQueryElement, but all fields are optional.
140+
*/
141+
type ParserQueryElementFields = {
142+
[K in keyof ParserQueryElement]?: ParserQueryElement[T]
143+
}
138144
/**
139145
* Intermediate parser state. Discarded when parsing is done.
140146
*/

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,6 @@ function getNextElem(query, parserState, elems, isInGenerics) {
638638
getFilteredNextElem(query, parserState, generics, isInGenerics);
639639
generics[generics.length - 1].bindingName = makePrimitiveElement("output");
640640
} else {
641-
// @ts-expect-error
642641
generics.push(makePrimitiveElement(null, {
643642
bindingName: makePrimitiveElement("output"),
644643
typeFilter: null,
@@ -791,7 +790,7 @@ function createQueryElement(query, parserState, name, generics, isInGenerics) {
791790
generics: generics.filter(gen => {
792791
// Syntactically, bindings are parsed as generics,
793792
// but the query engine treats them differently.
794-
if (gen.bindingName !== null) {
793+
if (gen.bindingName !== null && gen.bindingName.name !== null) {
795794
if (gen.name !== null) {
796795
gen.bindingName.generics.unshift(gen);
797796
}
@@ -811,8 +810,8 @@ function createQueryElement(query, parserState, name, generics, isInGenerics) {
811810

812811
/**
813812
*
814-
* @param {string} name
815-
* @param {Object=} extra
813+
* @param {string|null} name
814+
* @param {rustdoc.ParserQueryElementFields=} extra
816815
* @returns {rustdoc.ParserQueryElement}
817816
*/
818817
function makePrimitiveElement(name, extra) {

0 commit comments

Comments
 (0)