diff options
| author | Guillaume Gomez <guillaume.gomez@huawei.com> | 2022-04-18 23:11:42 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume.gomez@huawei.com> | 2022-04-18 23:11:42 +0200 |
| commit | 8d0e10cfbe9ca114a6470b6a26aa878ace5c03ba (patch) | |
| tree | 0193dd1a97b7f80dfb19b936ce55e91f9c1d0eb4 /src | |
| parent | 5c6c1e110f6c249ee21c6b4eebc39d9635d6d565 (diff) | |
| download | rust-8d0e10cfbe9ca114a6470b6a26aa878ace5c03ba.tar.gz rust-8d0e10cfbe9ca114a6470b6a26aa878ace5c03ba.zip | |
Correctly handle single `:`
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/html/static/js/search.js | 16 | ||||
| -rw-r--r-- | src/test/rustdoc-js-std/parser-errors.js | 10 |
2 files changed, 16 insertions, 10 deletions
diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js index 4d78a50e4d0..260f2bcb2cd 100644 --- a/src/librustdoc/html/static/js/search.js +++ b/src/librustdoc/html/static/js/search.js @@ -476,10 +476,10 @@ window.initSearch = function(rawSearchIndex) { throw new Error(`Unexpected \`${c}\` (did you mean \`->\`?)`); } throw new Error(`Unexpected \`${c}\``); - } else if (c === ":" && - parserState.typeFilter === null && - !isPathStart(parserState)) - { + } else if (c === ":" && !isPathStart(parserState)) { + if (parserState.typeFilter !== null) { + throw new Error("Unexpected `:`"); + } if (query.elems.length === 0) { throw new Error("Expected type filter before `:`"); } else if (query.elems.length !== 1 || parserState.totalElems !== 1) { @@ -505,12 +505,7 @@ window.initSearch = function(rawSearchIndex) { before = query.elems.length; getNextElem(query, parserState, query.elems, false); if (query.elems.length === before) { - // Nothing was added, let's check it's not because of a solo ":"! - if (parserState.pos >= parserState.length || - parserState.userQuery[parserState.pos] !== ":") - { - break; - } + // Nothing was added, weird... Let's increase the position to not remain stuck. parserState.pos += 1; } foundStopChar = false; @@ -678,6 +673,7 @@ window.initSearch = function(rawSearchIndex) { } catch (err) { query = newParsedQuery(userQuery); query.error = err.message; + query.typeFilter = -1; return query; } diff --git a/src/test/rustdoc-js-std/parser-errors.js b/src/test/rustdoc-js-std/parser-errors.js index 9d92f5ddfd3..779ab867c12 100644 --- a/src/test/rustdoc-js-std/parser-errors.js +++ b/src/test/rustdoc-js-std/parser-errors.js @@ -34,6 +34,7 @@ const QUERY = [ "a<>:", "a,:", " a<> :", + "mod : :", ]; const PARSED = [ @@ -352,4 +353,13 @@ const PARSED = [ userQuery: "a<> :", error: 'Unexpected `<` in type filter', }, + { + elems: [], + foundElems: 0, + original: "mod : :", + returned: [], + typeFilter: -1, + userQuery: "mod : :", + error: 'Unexpected `:`', + }, ]; |
