Skip to content

Commit d7d538a

Browse files
Fix some corner cases
1 parent da363b2 commit d7d538a

File tree

3 files changed

+29
-6
lines changed

3 files changed

+29
-6
lines changed

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

+3-5
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,14 @@ window.initSearch = function(rawSearchIndex) {
176176
throw new Error("Cannot use literal search when there is more than one element");
177177
}
178178
parserState.pos += 1;
179+
var start = parserState.pos;
179180
var end = getIdentEndPosition(parserState);
180181
if (parserState.pos >= parserState.length) {
181182
throw new Error("Unclosed `\"`");
182183
} else if (parserState.userQuery[end] !== "\"") {
183184
throw new Error(`Unexpected \`${parserState.userQuery[end]}\` in a string element`);
185+
} else if (start === end) {
186+
throw new Error("Cannot have empty string element");
184187
}
185188
// To skip the quote at the end.
186189
parserState.pos += 1;
@@ -657,11 +660,6 @@ window.initSearch = function(rawSearchIndex) {
657660
query.literalSearch = parserState.totalElems > 1;
658661
}
659662
query.foundElems = query.elems.length + query.returned.length;
660-
if (query.foundElems === 0 && parserState.length !== 0) {
661-
// In this case, we'll simply keep whatever was entered by the user...
662-
query.elems.push(createQueryElement(query, parserState, userQuery, [], false));
663-
query.foundElems += 1;
664-
}
665663
return query;
666664
}
667665

src/test/rustdoc-js-std/parser-quote.js

+10
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const QUERY = [
55
'"a" -> "p"',
66
'->"-"',
77
'"a',
8+
'""',
89
];
910

1011
const PARSED = [
@@ -74,4 +75,13 @@ const PARSED = [
7475
userQuery: '"a',
7576
error: 'Unclosed `"`',
7677
},
78+
{
79+
elems: [],
80+
foundElems: 0,
81+
original: '""',
82+
returned: [],
83+
typeFilter: -1,
84+
userQuery: '""',
85+
error: 'Cannot have empty string element',
86+
},
7787
];

src/test/rustdoc-js-std/parser-weird-queries.js

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
// This test is mostly to check that the parser still kinda outputs something
22
// (and doesn't enter an infinite loop!) even though the query is completely
33
// invalid.
4-
const QUERY = ['a b', 'a b', 'a,b(c)', 'aaa,a'];
4+
const QUERY = [
5+
'a b',
6+
'a b',
7+
'a,b(c)',
8+
'aaa,a',
9+
',,,,',
10+
];
511

612
const PARSED = [
713
{
@@ -85,4 +91,13 @@ const PARSED = [
8591
userQuery: "aaa,a",
8692
error: null,
8793
},
94+
{
95+
elems: [],
96+
foundElems: 0,
97+
original: ",,,,",
98+
returned: [],
99+
typeFilter: -1,
100+
userQuery: ",,,,",
101+
error: null,
102+
},
88103
];

0 commit comments

Comments
 (0)