diff options
| -rw-r--r-- | src/librustdoc/html/static/js/search.js | 8 | ||||
| -rw-r--r-- | src/test/rustdoc-js-std/parser-quote.js | 10 | ||||
| -rw-r--r-- | src/test/rustdoc-js-std/parser-weird-queries.js | 17 |
3 files changed, 29 insertions, 6 deletions
diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js index 5996fa7c8ad..a5b4847f99c 100644 --- a/src/librustdoc/html/static/js/search.js +++ b/src/librustdoc/html/static/js/search.js @@ -176,11 +176,14 @@ window.initSearch = function(rawSearchIndex) { throw new Error("Cannot use literal search when there is more than one element"); } parserState.pos += 1; + var start = parserState.pos; var end = getIdentEndPosition(parserState); if (parserState.pos >= parserState.length) { throw new Error("Unclosed `\"`"); } else if (parserState.userQuery[end] !== "\"") { throw new Error(`Unexpected \`${parserState.userQuery[end]}\` in a string element`); + } else if (start === end) { + throw new Error("Cannot have empty string element"); } // To skip the quote at the end. parserState.pos += 1; @@ -657,11 +660,6 @@ window.initSearch = function(rawSearchIndex) { query.literalSearch = parserState.totalElems > 1; } query.foundElems = query.elems.length + query.returned.length; - if (query.foundElems === 0 && parserState.length !== 0) { - // In this case, we'll simply keep whatever was entered by the user... - query.elems.push(createQueryElement(query, parserState, userQuery, [], false)); - query.foundElems += 1; - } return query; } diff --git a/src/test/rustdoc-js-std/parser-quote.js b/src/test/rustdoc-js-std/parser-quote.js index a7aa324c24c..1e16c90de5e 100644 --- a/src/test/rustdoc-js-std/parser-quote.js +++ b/src/test/rustdoc-js-std/parser-quote.js @@ -5,6 +5,7 @@ const QUERY = [ '"a" -> "p"', '->"-"', '"a', + '""', ]; const PARSED = [ @@ -74,4 +75,13 @@ const PARSED = [ userQuery: '"a', error: 'Unclosed `"`', }, + { + elems: [], + foundElems: 0, + original: '""', + returned: [], + typeFilter: -1, + userQuery: '""', + error: 'Cannot have empty string element', + }, ]; diff --git a/src/test/rustdoc-js-std/parser-weird-queries.js b/src/test/rustdoc-js-std/parser-weird-queries.js index 4b4ce64284e..d249e0bfdad 100644 --- a/src/test/rustdoc-js-std/parser-weird-queries.js +++ b/src/test/rustdoc-js-std/parser-weird-queries.js @@ -1,7 +1,13 @@ // This test is mostly to check that the parser still kinda outputs something // (and doesn't enter an infinite loop!) even though the query is completely // invalid. -const QUERY = ['a b', 'a b', 'a,b(c)', 'aaa,a']; +const QUERY = [ + 'a b', + 'a b', + 'a,b(c)', + 'aaa,a', + ',,,,', +]; const PARSED = [ { @@ -85,4 +91,13 @@ const PARSED = [ userQuery: "aaa,a", error: null, }, + { + elems: [], + foundElems: 0, + original: ",,,,", + returned: [], + typeFilter: -1, + userQuery: ",,,,", + error: null, + }, ]; |
