about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustdoc/html/static/js/search.js8
-rw-r--r--src/test/rustdoc-js-std/parser-quote.js10
-rw-r--r--src/test/rustdoc-js-std/parser-weird-queries.js17
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,
+    },
 ];