diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js
index 4e1bbbbf59d89..551f0842325d9 100644
--- a/src/librustdoc/html/static/js/search.js
+++ b/src/librustdoc/html/static/js/search.js
@@ -692,8 +692,6 @@ function createQueryElement(query, parserState, name, generics, isInGenerics) {
const quadcolon = /::\s*::/.exec(path);
if (path.startsWith("::")) {
throw ["Paths cannot start with ", "::"];
- } else if (path.endsWith("::")) {
- throw ["Paths cannot end with ", "::"];
} else if (quadcolon !== null) {
throw ["Unexpected ", quadcolon[0]];
}
@@ -3669,10 +3667,16 @@ class DocSearch {
return;
}
- const dist = editDistance(row.normalizedName, elem.normalizedPathLast, maxEditDistance);
-
- if (index === -1 && dist > maxEditDistance) {
- return;
+ let dist = 0;
+ if (elem.pathLast === "") {
+ if (path_dist > 0) {
+ return;
+ }
+ } else {
+ dist = editDistance(row.normalizedName, elem.normalizedPathLast, maxEditDistance);
+ if (index === -1 && dist > maxEditDistance) {
+ return;
+ }
}
addIntoResults(results_others, fullId, pos, index, dist, path_dist, maxEditDistance);
diff --git a/tests/rustdoc-js-std/parser-errors.js b/tests/rustdoc-js-std/parser-errors.js
index 068298e72360a..8bffef61c8f4f 100644
--- a/tests/rustdoc-js-std/parser-errors.js
+++ b/tests/rustdoc-js-std/parser-errors.js
@@ -143,14 +143,6 @@ const PARSED = [
returned: [],
error: "Unexpected `:: ::`",
},
- {
- query: "a::b::",
- elems: [],
- foundElems: 0,
- userQuery: "a::b::",
- returned: [],
- error: "Paths cannot end with `::`",
- },
{
query: ":a",
elems: [],
diff --git a/tests/rustdoc-js-std/path-end-empty.js b/tests/rustdoc-js-std/path-end-empty.js
new file mode 100644
index 0000000000000..6e853c61b4d95
--- /dev/null
+++ b/tests/rustdoc-js-std/path-end-empty.js
@@ -0,0 +1,6 @@
+const EXPECTED = {
+ 'query': 'Option::',
+ 'others': [
+ { 'path': 'std::option::Option', 'name': 'get_or_insert_default' },
+ ],
+}