rustdoc-search: allow :: and ::
This restriction made sense back when spaces separated function parameters, but now that they separate path components, there's no real ambiguity any more. Additionally, the Rust language allows it.
This commit is contained in:
@@ -512,18 +512,15 @@ function initSearch(rawSearchIndex) {
|
||||
bindingName,
|
||||
};
|
||||
}
|
||||
const quadcolon = /::\s*::/.exec(path);
|
||||
if (path.startsWith("::")) {
|
||||
throw ["Paths cannot start with ", "::"];
|
||||
} else if (path.endsWith("::")) {
|
||||
throw ["Paths cannot end with ", "::"];
|
||||
} else if (path.includes("::::")) {
|
||||
throw ["Unexpected ", "::::"];
|
||||
} else if (path.includes(" ::")) {
|
||||
throw ["Unexpected ", " ::"];
|
||||
} else if (path.includes(":: ")) {
|
||||
throw ["Unexpected ", ":: "];
|
||||
} else if (quadcolon !== null) {
|
||||
throw ["Unexpected ", quadcolon[0]];
|
||||
}
|
||||
const pathSegments = path.split(/::|\s+/);
|
||||
const pathSegments = path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);
|
||||
// In case we only have something like `<p>`, there is no name.
|
||||
if (pathSegments.length === 0 || (pathSegments.length === 1 && pathSegments[0] === "")) {
|
||||
if (generics.length > 0 || prevIs(parserState, ">")) {
|
||||
|
||||
@@ -143,6 +143,15 @@ const PARSED = [
|
||||
userQuery: "a::::b",
|
||||
error: "Unexpected `::::`",
|
||||
},
|
||||
{
|
||||
query: "a:: ::b",
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "a:: ::b",
|
||||
returned: [],
|
||||
userQuery: "a:: ::b",
|
||||
error: "Unexpected `:: ::`",
|
||||
},
|
||||
{
|
||||
query: "a::b::",
|
||||
elems: [],
|
||||
@@ -314,24 +323,6 @@ const PARSED = [
|
||||
userQuery: 'a<->',
|
||||
error: 'Unexpected `-` after `<`',
|
||||
},
|
||||
{
|
||||
query: "a:: a",
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: 'a:: a',
|
||||
returned: [],
|
||||
userQuery: 'a:: a',
|
||||
error: 'Unexpected `:: `',
|
||||
},
|
||||
{
|
||||
query: "a ::a",
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: 'a ::a',
|
||||
returned: [],
|
||||
userQuery: 'a ::a',
|
||||
error: 'Unexpected ` ::`',
|
||||
},
|
||||
{
|
||||
query: "a<a>:",
|
||||
elems: [],
|
||||
|
||||
@@ -15,6 +15,54 @@ const PARSED = [
|
||||
userQuery: "a::b",
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: "a:: a",
|
||||
elems: [{
|
||||
name: "a:: a",
|
||||
fullPath: ["a", "a"],
|
||||
pathWithoutLast: ["a"],
|
||||
pathLast: "a",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
}],
|
||||
foundElems: 1,
|
||||
original: 'a:: a',
|
||||
returned: [],
|
||||
userQuery: 'a:: a',
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: "a ::a",
|
||||
elems: [{
|
||||
name: "a ::a",
|
||||
fullPath: ["a", "a"],
|
||||
pathWithoutLast: ["a"],
|
||||
pathLast: "a",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
}],
|
||||
foundElems: 1,
|
||||
original: 'a ::a',
|
||||
returned: [],
|
||||
userQuery: 'a ::a',
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: "a :: a",
|
||||
elems: [{
|
||||
name: "a :: a",
|
||||
fullPath: ["a", "a"],
|
||||
pathWithoutLast: ["a"],
|
||||
pathLast: "a",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
}],
|
||||
foundElems: 1,
|
||||
original: 'a :: a',
|
||||
returned: [],
|
||||
userQuery: 'a :: a',
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: 'A::B,C',
|
||||
elems: [
|
||||
|
||||
Reference in New Issue
Block a user