rustdoc-search: pass original names through AST

This commit is contained in:
Michael Howell
2024-09-24 12:33:09 -07:00
parent 2cc1c0c39a
commit 5c7e7dfe10
19 changed files with 295 additions and 487 deletions

View File

@@ -276,7 +276,7 @@ function getFilteredNextElem(query, parserState, elems, isInGenerics) {
// The type filter doesn't count as an element since it's a modifier. // The type filter doesn't count as an element since it's a modifier.
const typeFilterElem = elems.pop(); const typeFilterElem = elems.pop();
checkExtraTypeFilterCharacters(start, parserState); checkExtraTypeFilterCharacters(start, parserState);
parserState.typeFilter = typeFilterElem.name; parserState.typeFilter = typeFilterElem.normalizedPathLast;
parserState.pos += 1; parserState.pos += 1;
parserState.totalElems -= 1; parserState.totalElems -= 1;
query.literalSearch = false; query.literalSearch = false;
@@ -686,7 +686,7 @@ function createQueryElement(query, parserState, name, generics, isInGenerics) {
} else if (quadcolon !== null) { } else if (quadcolon !== null) {
throw ["Unexpected ", quadcolon[0]]; throw ["Unexpected ", quadcolon[0]];
} }
const pathSegments = path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/); const pathSegments = path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/).map(x => x.toLowerCase());
// In case we only have something like `<p>`, there is no name. // In case we only have something like `<p>`, there is no name.
if (pathSegments.length === 0 if (pathSegments.length === 0
|| (pathSegments.length === 1 && pathSegments[0] === "")) { || (pathSegments.length === 1 && pathSegments[0] === "")) {
@@ -726,7 +726,10 @@ function createQueryElement(query, parserState, name, generics, isInGenerics) {
if (gen.name !== null) { if (gen.name !== null) {
gen.bindingName.generics.unshift(gen); gen.bindingName.generics.unshift(gen);
} }
bindings.set(gen.bindingName.name, gen.bindingName.generics); bindings.set(
gen.bindingName.name.toLowerCase().replace(/_/g, ""),
gen.bindingName.generics,
);
return false; return false;
} }
return true; return true;
@@ -1786,8 +1789,7 @@ class DocSearch {
*/ */
function newParsedQuery(userQuery) { function newParsedQuery(userQuery) {
return { return {
original: userQuery, userQuery,
userQuery: userQuery.toLowerCase(),
elems: [], elems: [],
returned: [], returned: [],
// Total number of "top" elements (does not include generics). // Total number of "top" elements (does not include generics).
@@ -1909,7 +1911,7 @@ class DocSearch {
genericsElems: 0, genericsElems: 0,
typeFilter: null, typeFilter: null,
isInBinding: null, isInBinding: null,
userQuery: userQuery.toLowerCase(), userQuery,
}; };
let query = newParsedQuery(userQuery); let query = newParsedQuery(userQuery);
@@ -2097,7 +2099,7 @@ class DocSearch {
*/ */
const sortResults = async(results, isType, preferredCrate) => { const sortResults = async(results, isType, preferredCrate) => {
const userQuery = parsedQuery.userQuery; const userQuery = parsedQuery.userQuery;
const casedUserQuery = parsedQuery.original; const normalizedUserQuery = parsedQuery.userQuery.toLowerCase();
const result_list = []; const result_list = [];
for (const result of results.values()) { for (const result of results.values()) {
result.item = this.searchIndex[result.id]; result.item = this.searchIndex[result.id];
@@ -2109,15 +2111,15 @@ class DocSearch {
let a, b; let a, b;
// sort by exact case-sensitive match // sort by exact case-sensitive match
a = (aaa.item.name !== casedUserQuery); a = (aaa.item.name !== userQuery);
b = (bbb.item.name !== casedUserQuery); b = (bbb.item.name !== userQuery);
if (a !== b) { if (a !== b) {
return a - b; return a - b;
} }
// sort by exact match with regard to the last word (mismatch goes later) // sort by exact match with regard to the last word (mismatch goes later)
a = (aaa.word !== userQuery); a = (aaa.word !== normalizedUserQuery);
b = (bbb.word !== userQuery); b = (bbb.word !== normalizedUserQuery);
if (a !== b) { if (a !== b) {
return a - b; return a - b;
} }
@@ -3163,21 +3165,25 @@ class DocSearch {
if ((elem.id === null && parsedQuery.totalElems > 1 && elem.typeFilter === -1 if ((elem.id === null && parsedQuery.totalElems > 1 && elem.typeFilter === -1
&& elem.generics.length === 0 && elem.bindings.size === 0) && elem.generics.length === 0 && elem.bindings.size === 0)
|| elem.typeFilter === TY_GENERIC) { || elem.typeFilter === TY_GENERIC) {
if (genericSymbols.has(elem.name)) { if (genericSymbols.has(elem.normalizedPathLast)) {
elem.id = genericSymbols.get(elem.name); elem.id = genericSymbols.get(elem.normalizedPathLast);
} else { } else {
elem.id = -(genericSymbols.size + 1); elem.id = -(genericSymbols.size + 1);
genericSymbols.set(elem.name, elem.id); genericSymbols.set(elem.normalizedPathLast, elem.id);
} }
if (elem.typeFilter === -1 && elem.name.length >= 3) { if (elem.typeFilter === -1 && elem.normalizedPathLast.length >= 3) {
// Silly heuristic to catch if the user probably meant // Silly heuristic to catch if the user probably meant
// to not write a generic parameter. We don't use it, // to not write a generic parameter. We don't use it,
// just bring it up. // just bring it up.
const maxPartDistance = Math.floor(elem.name.length / 3); const maxPartDistance = Math.floor(elem.normalizedPathLast.length / 3);
let matchDist = maxPartDistance + 1; let matchDist = maxPartDistance + 1;
let matchName = ""; let matchName = "";
for (const name of this.typeNameIdMap.keys()) { for (const name of this.typeNameIdMap.keys()) {
const dist = editDistance(name, elem.name, maxPartDistance); const dist = editDistance(
name,
elem.normalizedPathLast,
maxPartDistance,
);
if (dist <= matchDist && dist <= maxPartDistance) { if (dist <= matchDist && dist <= maxPartDistance) {
if (dist === matchDist && matchName > name) { if (dist === matchDist && matchName > name) {
continue; continue;
@@ -3289,7 +3295,7 @@ class DocSearch {
sorted_returned, sorted_returned,
sorted_others, sorted_others,
parsedQuery); parsedQuery);
await handleAliases(ret, parsedQuery.original.replace(/"/g, ""), await handleAliases(ret, parsedQuery.userQuery.replace(/"/g, ""),
filterCrates, currentCrate); filterCrates, currentCrate);
await Promise.all([ret.others, ret.returned, ret.in_args].map(async list => { await Promise.all([ret.others, ret.returned, ret.in_args].map(async list => {
const descs = await Promise.all(list.map(result => { const descs = await Promise.all(list.map(result => {
@@ -3709,11 +3715,11 @@ async function search(forced) {
} }
// Update document title to maintain a meaningful browser history // Update document title to maintain a meaningful browser history
searchState.title = "\"" + query.original + "\" Search - Rust"; searchState.title = "\"" + query.userQuery + "\" Search - Rust";
// Because searching is incremental by character, only the most // Because searching is incremental by character, only the most
// recent search query is added to the browser history. // recent search query is added to the browser history.
updateSearchHistory(buildUrl(query.original, filterCrates)); updateSearchHistory(buildUrl(query.userQuery, filterCrates));
await showResults( await showResults(
await docSearch.execQuery(query, filterCrates, window.currentCrate), await docSearch.execQuery(query, filterCrates, window.currentCrate),

View File

@@ -84,7 +84,6 @@ function checkNeededFields(fullPath, expected, error_text, queryName, position)
if (fullPath.length === 0) { if (fullPath.length === 0) {
fieldsToCheck = [ fieldsToCheck = [
"foundElems", "foundElems",
"original",
"returned", "returned",
"userQuery", "userQuery",
"error", "error",

View File

@@ -24,7 +24,7 @@ assert-css: (".search-corrections", {
}) })
assert-text: ( assert-text: (
".search-corrections", ".search-corrections",
"Type \"notablestructwithlongnamr\" not found. Showing results for closest type name \"notablestructwithlongname\" instead." "Type \"NotableStructWithLongNamr\" not found. Showing results for closest type name \"notablestructwithlongname\" instead."
) )
// Corrections do get shown on the "In Return Type" tab. // Corrections do get shown on the "In Return Type" tab.
@@ -35,7 +35,7 @@ assert-css: (".search-corrections", {
}) })
assert-text: ( assert-text: (
".search-corrections", ".search-corrections",
"Type \"notablestructwithlongnamr\" not found. Showing results for closest type name \"notablestructwithlongname\" instead." "Type \"NotableStructWithLongNamr\" not found. Showing results for closest type name \"notablestructwithlongname\" instead."
) )
// Now, explicit return values // Now, explicit return values
@@ -52,7 +52,7 @@ assert-css: (".search-corrections", {
}) })
assert-text: ( assert-text: (
".search-corrections", ".search-corrections",
"Type \"notablestructwithlongnamr\" not found. Showing results for closest type name \"notablestructwithlongname\" instead." "Type \"NotableStructWithLongNamr\" not found. Showing results for closest type name \"notablestructwithlongname\" instead."
) )
// Now, generic correction // Now, generic correction
@@ -69,7 +69,7 @@ assert-css: (".search-corrections", {
}) })
assert-text: ( assert-text: (
".search-corrections", ".search-corrections",
"Type \"notablestructwithlongnamr\" not found and used as generic parameter. Consider searching for \"notablestructwithlongname\" instead." "Type \"NotableStructWithLongNamr\" not found and used as generic parameter. Consider searching for \"notablestructwithlongname\" instead."
) )
// Now, generic correction plus error // Now, generic correction plus error
@@ -86,7 +86,7 @@ assert-css: (".search-corrections", {
}) })
assert-text: ( assert-text: (
".search-corrections", ".search-corrections",
"Type \"notablestructwithlongnamr\" not found and used as generic parameter. Consider searching for \"notablestructwithlongname\" instead." "Type \"NotableStructWithLongNamr\" not found and used as generic parameter. Consider searching for \"notablestructwithlongname\" instead."
) )
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html" go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
@@ -102,5 +102,5 @@ assert-css: (".error", {
}) })
assert-text: ( assert-text: (
".error", ".error",
"Query parser error: \"Generic type parameter notablestructwithlongnamr does not accept generic parameters\"." "Query parser error: \"Generic type parameter NotableStructWithLongNamr does not accept generic parameters\"."
) )

View File

@@ -3,20 +3,22 @@ const PARSED = [
query: 'A<B=C>', query: 'A<B=C>',
elems: [ elems: [
{ {
name: "a", name: "A",
fullPath: ["a"], fullPath: ["a"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "a", pathLast: "a",
normalizedPathLast: "a",
generics: [], generics: [],
bindings: [ bindings: [
[ [
'b', 'b',
[ [
{ {
name: "c", name: "C",
fullPath: ["c"], fullPath: ["c"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "c", pathLast: "c",
normalizedPathLast: "c",
generics: [], generics: [],
typeFilter: -1, typeFilter: -1,
}, },
@@ -27,16 +29,15 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: 'A<B=C>', userQuery: 'A<B=C>',
returned: [], returned: [],
userQuery: 'a<b=c>',
error: null, error: null,
}, },
{ {
query: 'A<B = C>', query: 'A<B = C>',
elems: [ elems: [
{ {
name: "a", name: "A",
fullPath: ["a"], fullPath: ["a"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "a", pathLast: "a",
@@ -45,7 +46,7 @@ const PARSED = [
[ [
'b', 'b',
[{ [{
name: "c", name: "C",
fullPath: ["c"], fullPath: ["c"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "c", pathLast: "c",
@@ -58,16 +59,15 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: 'A<B = C>', userQuery: 'A<B = C>',
returned: [], returned: [],
userQuery: 'a<b = c>',
error: null, error: null,
}, },
{ {
query: 'A<B=!>', query: 'A<B=!>',
elems: [ elems: [
{ {
name: "a", name: "A",
fullPath: ["a"], fullPath: ["a"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "a", pathLast: "a",
@@ -89,16 +89,15 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: 'A<B=!>', userQuery: 'A<B=!>',
returned: [], returned: [],
userQuery: 'a<b=!>',
error: null, error: null,
}, },
{ {
query: 'A<B=[]>', query: 'A<B=[]>',
elems: [ elems: [
{ {
name: "a", name: "A",
fullPath: ["a"], fullPath: ["a"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "a", pathLast: "a",
@@ -120,16 +119,15 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: 'A<B=[]>', userQuery: 'A<B=[]>',
returned: [], returned: [],
userQuery: 'a<b=[]>',
error: null, error: null,
}, },
{ {
query: 'A<B=[!]>', query: 'A<B=[!]>',
elems: [ elems: [
{ {
name: "a", name: "A",
fullPath: ["a"], fullPath: ["a"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "a", pathLast: "a",
@@ -160,52 +158,47 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: 'A<B=[!]>', userQuery: 'A<B=[!]>',
returned: [], returned: [],
userQuery: 'a<b=[!]>',
error: null, error: null,
}, },
{ {
query: 'A<B=C=>', query: 'A<B=C=>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: 'A<B=C=>', userQuery: 'A<B=C=>',
returned: [], returned: [],
userQuery: 'a<b=c=>',
error: "Cannot write `=` twice in a binding", error: "Cannot write `=` twice in a binding",
}, },
{ {
query: 'A<B=>', query: 'A<B=>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: 'A<B=>', userQuery: 'A<B=>',
returned: [], returned: [],
userQuery: 'a<b=>',
error: "Unexpected `>` after `=`", error: "Unexpected `>` after `=`",
}, },
{ {
query: 'B=C', query: 'B=C',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: 'B=C', userQuery: 'B=C',
returned: [], returned: [],
userQuery: 'b=c',
error: "Type parameter `=` must be within generics list", error: "Type parameter `=` must be within generics list",
}, },
{ {
query: '[B=C]', query: '[B=C]',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '[B=C]', userQuery: '[B=C]',
returned: [], returned: [],
userQuery: '[b=c]',
error: "Type parameter `=` cannot be within slice `[]`", error: "Type parameter `=` cannot be within slice `[]`",
}, },
{ {
query: 'A<B<X>=C>', query: 'A<B<X>=C>',
elems: [ elems: [
{ {
name: "a", name: "A",
fullPath: ["a"], fullPath: ["a"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "a", pathLast: "a",
@@ -215,7 +208,7 @@ const PARSED = [
'b', 'b',
[ [
{ {
name: "c", name: "C",
fullPath: ["c"], fullPath: ["c"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "c", pathLast: "c",
@@ -223,7 +216,7 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}, },
{ {
name: "x", name: "X",
fullPath: ["x"], fullPath: ["x"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "x", pathLast: "x",
@@ -237,9 +230,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: 'A<B<X>=C>', userQuery: 'A<B<X>=C>',
returned: [], returned: [],
userQuery: 'a<b<x>=c>',
error: null, error: null,
}, },
]; ];

View File

@@ -3,450 +3,400 @@ const PARSED = [
query: '<P>', query: '<P>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "<P>", userQuery: "<P>",
returned: [], returned: [],
userQuery: "<p>",
error: "Found generics without a path", error: "Found generics without a path",
}, },
{ {
query: '-> <P>', query: '-> <P>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "-> <P>", userQuery: "-> <P>",
returned: [], returned: [],
userQuery: "-> <p>",
error: "Found generics without a path", error: "Found generics without a path",
}, },
{ {
query: '-> *', query: '-> *',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "-> *",
returned: [],
userQuery: "-> *", userQuery: "-> *",
returned: [],
error: "Unexpected `*` after ` ` (not a valid identifier)", error: "Unexpected `*` after ` ` (not a valid identifier)",
}, },
{ {
query: 'a<"P">', query: 'a<"P">',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a<\"P\">", userQuery: "a<\"P\">",
returned: [], returned: [],
userQuery: "a<\"p\">",
error: "Unexpected `\"` in generics", error: "Unexpected `\"` in generics",
}, },
{ {
query: '"P" "P"', query: '"P" "P"',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "\"P\" \"P\"", userQuery: "\"P\" \"P\"",
returned: [], returned: [],
userQuery: "\"p\" \"p\"",
error: "Cannot have more than one element if you use quotes", error: "Cannot have more than one element if you use quotes",
}, },
{ {
query: '"P","P"', query: '"P","P"',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "\"P\",\"P\"", userQuery: "\"P\",\"P\"",
returned: [], returned: [],
userQuery: "\"p\",\"p\"",
error: "Cannot have more than one literal search element", error: "Cannot have more than one literal search element",
}, },
{ {
query: "P,\"P\"", query: "P,\"P\"",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "P,\"P\"", userQuery: "P,\"P\"",
returned: [], returned: [],
userQuery: "p,\"p\"",
error: "Cannot use literal search when there is more than one element", error: "Cannot use literal search when there is more than one element",
}, },
{ {
query: '"p" p', query: '"p" p',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "\"p\" p",
returned: [],
userQuery: "\"p\" p", userQuery: "\"p\" p",
returned: [],
error: "Cannot have more than one element if you use quotes", error: "Cannot have more than one element if you use quotes",
}, },
{ {
query: '"p",p', query: '"p",p',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "\"p\",p",
returned: [],
userQuery: "\"p\",p", userQuery: "\"p\",p",
returned: [],
error: "Cannot have more than one element if you use quotes", error: "Cannot have more than one element if you use quotes",
}, },
{ {
query: '"const": p', query: '"const": p',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "\"const\": p",
returned: [],
userQuery: "\"const\": p", userQuery: "\"const\": p",
returned: [],
error: "Cannot use quotes on type filter", error: "Cannot use quotes on type filter",
}, },
{ {
query: "a<:a>", query: "a<:a>",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a<:a>",
returned: [],
userQuery: "a<:a>", userQuery: "a<:a>",
returned: [],
error: "Expected type filter before `:`", error: "Expected type filter before `:`",
}, },
{ {
query: "a<::a>", query: "a<::a>",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a<::a>",
returned: [],
userQuery: "a<::a>", userQuery: "a<::a>",
returned: [],
error: "Unexpected `::`: paths cannot start with `::`", error: "Unexpected `::`: paths cannot start with `::`",
}, },
{ {
query: "(p -> p", query: "(p -> p",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "(p -> p",
returned: [],
userQuery: "(p -> p", userQuery: "(p -> p",
returned: [],
error: "Unclosed `(`", error: "Unclosed `(`",
}, },
{ {
query: "::a::b", query: "::a::b",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "::a::b",
returned: [],
userQuery: "::a::b", userQuery: "::a::b",
returned: [],
error: "Paths cannot start with `::`", error: "Paths cannot start with `::`",
}, },
{ {
query: " ::a::b", query: " ::a::b",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "::a::b",
returned: [],
userQuery: "::a::b", userQuery: "::a::b",
returned: [],
error: "Paths cannot start with `::`", error: "Paths cannot start with `::`",
}, },
{ {
query: "a::::b", query: "a::::b",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a::::b",
returned: [],
userQuery: "a::::b", userQuery: "a::::b",
returned: [],
error: "Unexpected `::::`", error: "Unexpected `::::`",
}, },
{ {
query: "a:: ::b", query: "a:: ::b",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a:: ::b",
returned: [],
userQuery: "a:: ::b", userQuery: "a:: ::b",
returned: [],
error: "Unexpected `:: ::`", error: "Unexpected `:: ::`",
}, },
{ {
query: "a::\t::b", query: "a::\t::b",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a:: ::b",
returned: [],
userQuery: "a:: ::b", userQuery: "a:: ::b",
returned: [],
error: "Unexpected `:: ::`", error: "Unexpected `:: ::`",
}, },
{ {
query: "a::b::", query: "a::b::",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a::b::",
returned: [],
userQuery: "a::b::", userQuery: "a::b::",
returned: [],
error: "Paths cannot end with `::`", error: "Paths cannot end with `::`",
}, },
{ {
query: ":a", query: ":a",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: ":a",
returned: [],
userQuery: ":a", userQuery: ":a",
returned: [],
error: "Expected type filter before `:`", error: "Expected type filter before `:`",
}, },
{ {
query: "a,b:", query: "a,b:",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a,b:",
returned: [],
userQuery: "a,b:", userQuery: "a,b:",
returned: [],
error: "Unexpected `:` (expected path after type filter `b:`)", error: "Unexpected `:` (expected path after type filter `b:`)",
}, },
{ {
query: "a (b:", query: "a (b:",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a (b:",
returned: [],
userQuery: "a (b:", userQuery: "a (b:",
returned: [],
error: "Unclosed `(`", error: "Unclosed `(`",
}, },
{ {
query: "_:", query: "_:",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "_:",
returned: [],
userQuery: "_:", userQuery: "_:",
returned: [],
error: "Unexpected `_` (not a valid identifier)", error: "Unexpected `_` (not a valid identifier)",
}, },
{ {
query: "ab:", query: "ab:",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "ab:",
returned: [],
userQuery: "ab:", userQuery: "ab:",
returned: [],
error: "Unexpected `:` (expected path after type filter `ab:`)", error: "Unexpected `:` (expected path after type filter `ab:`)",
}, },
{ {
query: "a:b", query: "a:b",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a:b",
returned: [],
userQuery: "a:b", userQuery: "a:b",
returned: [],
error: "Unknown type filter `a`", error: "Unknown type filter `a`",
}, },
{ {
query: "a-bb", query: "a-bb",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a-bb",
returned: [],
userQuery: "a-bb", userQuery: "a-bb",
returned: [],
error: "Unexpected `-` (did you mean `->`?)", error: "Unexpected `-` (did you mean `->`?)",
}, },
{ {
query: "a>bb", query: "a>bb",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a>bb",
returned: [],
userQuery: "a>bb", userQuery: "a>bb",
returned: [],
error: "Unexpected `>` (did you mean `->`?)", error: "Unexpected `>` (did you mean `->`?)",
}, },
{ {
query: "ab'", query: "ab'",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "ab'",
returned: [],
userQuery: "ab'", userQuery: "ab'",
returned: [],
error: "Unexpected `'` after `b` (not a valid identifier)", error: "Unexpected `'` after `b` (not a valid identifier)",
}, },
{ {
query: '"p" <a>', query: '"p" <a>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '"p" <a>',
returned: [],
userQuery: '"p" <a>', userQuery: '"p" <a>',
returned: [],
error: "Cannot have more than one element if you use quotes", error: "Cannot have more than one element if you use quotes",
}, },
{ {
query: '"p",<a>', query: '"p",<a>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '"p",<a>',
returned: [],
userQuery: '"p",<a>', userQuery: '"p",<a>',
returned: [],
error: "Found generics without a path", error: "Found generics without a path",
}, },
{ {
query: '"p" a<a>', query: '"p" a<a>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '"p" a<a>',
returned: [],
userQuery: '"p" a<a>', userQuery: '"p" a<a>',
returned: [],
error: "Cannot have more than one element if you use quotes", error: "Cannot have more than one element if you use quotes",
}, },
{ {
query: '"p",a<a>', query: '"p",a<a>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '"p",a<a>',
returned: [],
userQuery: '"p",a<a>', userQuery: '"p",a<a>',
returned: [],
error: "Cannot have more than one element if you use quotes", error: "Cannot have more than one element if you use quotes",
}, },
{ {
query: "a,<", query: "a,<",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: 'a,<',
returned: [],
userQuery: 'a,<', userQuery: 'a,<',
returned: [],
error: 'Found generics without a path', error: 'Found generics without a path',
}, },
{ {
query: "aaaaa<>b", query: "aaaaa<>b",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: 'aaaaa<>b',
returned: [],
userQuery: 'aaaaa<>b', userQuery: 'aaaaa<>b',
returned: [],
error: 'Expected `,`, `:` or `->` after `>`, found `b`', error: 'Expected `,`, `:` or `->` after `>`, found `b`',
}, },
{ {
query: "fn:aaaaa<>b", query: "fn:aaaaa<>b",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: 'fn:aaaaa<>b',
returned: [],
userQuery: 'fn:aaaaa<>b', userQuery: 'fn:aaaaa<>b',
returned: [],
error: 'Expected `,`, `:` or `->` after `>`, found `b`', error: 'Expected `,`, `:` or `->` after `>`, found `b`',
}, },
{ {
query: "->a<>b", query: "->a<>b",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '->a<>b',
returned: [],
userQuery: '->a<>b', userQuery: '->a<>b',
returned: [],
error: 'Expected `,` or `=` after `>`, found `b`', error: 'Expected `,` or `=` after `>`, found `b`',
}, },
{ {
query: "a<->", query: "a<->",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: 'a<->',
returned: [],
userQuery: 'a<->', userQuery: 'a<->',
returned: [],
error: 'Unclosed `<`', error: 'Unclosed `<`',
}, },
{ {
query: "a<a>:", query: "a<a>:",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a<a>:",
returned: [],
userQuery: "a<a>:", userQuery: "a<a>:",
returned: [],
error: 'Unexpected `<` in type filter (before `:`)', error: 'Unexpected `<` in type filter (before `:`)',
}, },
{ {
query: "a<>:", query: "a<>:",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a<>:",
returned: [],
userQuery: "a<>:", userQuery: "a<>:",
returned: [],
error: 'Unexpected `<` in type filter (before `:`)', error: 'Unexpected `<` in type filter (before `:`)',
}, },
{ {
query: "a,:", query: "a,:",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a,:",
returned: [],
userQuery: "a,:", userQuery: "a,:",
returned: [],
error: 'Expected type filter before `:`', error: 'Expected type filter before `:`',
}, },
{ {
query: "a!:", query: "a!:",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a!:",
returned: [],
userQuery: "a!:", userQuery: "a!:",
returned: [],
error: 'Unexpected `!` in type filter (before `:`)', error: 'Unexpected `!` in type filter (before `:`)',
}, },
{ {
query: " a<> :", query: " a<> :",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a<> :",
returned: [],
userQuery: "a<> :", userQuery: "a<> :",
returned: [],
error: 'Expected `,`, `:` or `->` after `>`, found `:`', error: 'Expected `,`, `:` or `->` after `>`, found `:`',
}, },
{ {
query: "mod : :", query: "mod : :",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "mod : :",
returned: [],
userQuery: "mod : :", userQuery: "mod : :",
returned: [],
error: 'Unexpected `:` (expected path after type filter `mod:`)', error: 'Unexpected `:` (expected path after type filter `mod:`)',
}, },
{ {
query: "mod: :", query: "mod: :",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "mod: :",
returned: [],
userQuery: "mod: :", userQuery: "mod: :",
returned: [],
error: 'Unexpected `:` (expected path after type filter `mod:`)', error: 'Unexpected `:` (expected path after type filter `mod:`)',
}, },
{ {
query: "a!a", query: "a!a",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a!a",
returned: [],
userQuery: "a!a", userQuery: "a!a",
returned: [],
error: 'Unexpected `!`: it can only be at the end of an ident', error: 'Unexpected `!`: it can only be at the end of an ident',
}, },
{ {
query: "a!!", query: "a!!",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a!!",
returned: [],
userQuery: "a!!", userQuery: "a!!",
returned: [],
error: 'Cannot have more than one `!` in an ident', error: 'Cannot have more than one `!` in an ident',
}, },
{ {
query: "mod:a!", query: "mod:a!",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "mod:a!",
returned: [],
userQuery: "mod:a!", userQuery: "mod:a!",
returned: [],
error: 'Invalid search type: macro `!` and `mod` both specified', error: 'Invalid search type: macro `!` and `mod` both specified',
}, },
{ {
query: "mod:!", query: "mod:!",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "mod:!",
returned: [],
userQuery: "mod:!", userQuery: "mod:!",
returned: [],
error: 'Invalid search type: primitive never type `!` and `mod` both specified', error: 'Invalid search type: primitive never type `!` and `mod` both specified',
}, },
{ {
query: "a!::a", query: "a!::a",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a!::a",
returned: [],
userQuery: "a!::a", userQuery: "a!::a",
returned: [],
error: 'Cannot have associated items in macros', error: 'Cannot have associated items in macros',
}, },
{ {
query: "a<", query: "a<",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a<",
returned: [],
userQuery: "a<", userQuery: "a<",
returned: [],
error: "Unclosed `<`", error: "Unclosed `<`",
}, },
{ {
@@ -479,9 +429,8 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: "p<x> , y",
returned: [],
userQuery: "p<x> , y", userQuery: "p<x> , y",
returned: [],
error: null, error: null,
}, },
{ {
@@ -514,9 +463,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "p<x , y>",
returned: [],
userQuery: "p<x , y>", userQuery: "p<x , y>",
returned: [],
error: null, error: null,
}, },
{ {
@@ -548,9 +496,8 @@ const PARSED = [
}, },
], ],
foundElems: 3, foundElems: 3,
original: "p ,x , y",
returned: [],
userQuery: "p ,x , y", userQuery: "p ,x , y",
returned: [],
error: null, error: null,
}, },
]; ];

View File

@@ -10,9 +10,8 @@ const PARSED = [
typeFilter: 7, typeFilter: 7,
}], }],
foundElems: 1, foundElems: 1,
original: "fn:foo",
returned: [],
userQuery: "fn:foo", userQuery: "fn:foo",
returned: [],
error: null, error: null,
}, },
{ {
@@ -26,18 +25,16 @@ const PARSED = [
typeFilter: 6, typeFilter: 6,
}], }],
foundElems: 1, foundElems: 1,
original: "enum : foo",
returned: [],
userQuery: "enum : foo", userQuery: "enum : foo",
returned: [],
error: null, error: null,
}, },
{ {
query: 'macro<f>:foo', query: 'macro<f>:foo',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "macro<f>:foo",
returned: [],
userQuery: "macro<f>:foo", userQuery: "macro<f>:foo",
returned: [],
error: "Unexpected `<` in type filter (before `:`)", error: "Unexpected `<` in type filter (before `:`)",
}, },
{ {
@@ -51,9 +48,8 @@ const PARSED = [
typeFilter: 16, typeFilter: 16,
}], }],
foundElems: 1, foundElems: 1,
original: "macro!",
returned: [],
userQuery: "macro!", userQuery: "macro!",
returned: [],
error: null, error: null,
}, },
{ {
@@ -67,9 +63,8 @@ const PARSED = [
typeFilter: 16, typeFilter: 16,
}], }],
foundElems: 1, foundElems: 1,
original: "macro:mac!",
returned: [],
userQuery: "macro:mac!", userQuery: "macro:mac!",
returned: [],
error: null, error: null,
}, },
{ {
@@ -83,16 +78,15 @@ const PARSED = [
typeFilter: 16, typeFilter: 16,
}], }],
foundElems: 1, foundElems: 1,
original: "a::mac!",
returned: [],
userQuery: "a::mac!", userQuery: "a::mac!",
returned: [],
error: null, error: null,
}, },
{ {
query: '-> fn:foo', query: '-> fn:foo',
elems: [], elems: [],
foundElems: 1, foundElems: 1,
original: "-> fn:foo", userQuery: "-> fn:foo",
returned: [{ returned: [{
name: "foo", name: "foo",
fullPath: ["foo"], fullPath: ["foo"],
@@ -101,14 +95,13 @@ const PARSED = [
generics: [], generics: [],
typeFilter: 7, typeFilter: 7,
}], }],
userQuery: "-> fn:foo",
error: null, error: null,
}, },
{ {
query: '-> fn:foo<fn:bar>', query: '-> fn:foo<fn:bar>',
elems: [], elems: [],
foundElems: 1, foundElems: 1,
original: "-> fn:foo<fn:bar>", userQuery: "-> fn:foo<fn:bar>",
returned: [{ returned: [{
name: "foo", name: "foo",
fullPath: ["foo"], fullPath: ["foo"],
@@ -126,14 +119,13 @@ const PARSED = [
], ],
typeFilter: 7, typeFilter: 7,
}], }],
userQuery: "-> fn:foo<fn:bar>",
error: null, error: null,
}, },
{ {
query: '-> fn:foo<fn:bar, enum : baz::fuzz>', query: '-> fn:foo<fn:bar, enum : baz::fuzz>',
elems: [], elems: [],
foundElems: 1, foundElems: 1,
original: "-> fn:foo<fn:bar, enum : baz::fuzz>", userQuery: "-> fn:foo<fn:bar, enum : baz::fuzz>",
returned: [{ returned: [{
name: "foo", name: "foo",
fullPath: ["foo"], fullPath: ["foo"],
@@ -159,7 +151,6 @@ const PARSED = [
], ],
typeFilter: 7, typeFilter: 7,
}], }],
userQuery: "-> fn:foo<fn:bar, enum : baz::fuzz>",
error: null, error: null,
}, },
]; ];

View File

@@ -3,9 +3,8 @@ const PARSED = [
query: 'A<B<C<D>, E>', query: 'A<B<C<D>, E>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: 'A<B<C<D>, E>', userQuery: 'A<B<C<D>, E>',
returned: [], returned: [],
userQuery: 'a<b<c<d>, e>',
error: 'Unclosed `<`', error: 'Unclosed `<`',
}, },
{ {
@@ -29,9 +28,8 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: "p<>,u8",
returned: [],
userQuery: "p<>,u8", userQuery: "p<>,u8",
returned: [],
error: null, error: null,
}, },
{ {
@@ -55,9 +53,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: '"p"<a>',
returned: [],
userQuery: '"p"<a>', userQuery: '"p"<a>',
returned: [],
error: null, error: null,
}, },
{ {
@@ -89,9 +86,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: 'p<u<x>>',
returned: [],
userQuery: 'p<u<x>>', userQuery: 'p<u<x>>',
returned: [],
error: null, error: null,
}, },
{ {
@@ -130,9 +126,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: 'p<u<x>, r>',
returned: [],
userQuery: 'p<u<x>, r>', userQuery: 'p<u<x>, r>',
returned: [],
error: null, error: null,
}, },
{ {
@@ -171,9 +166,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: 'p<u<x, r>>',
returned: [],
userQuery: 'p<u<x, r>>', userQuery: 'p<u<x, r>>',
returned: [],
error: null, error: null,
}, },
]; ];

View File

@@ -12,13 +12,13 @@ const PARSED = [
[ [
"output", "output",
[{ [{
name: "f", name: "F",
fullPath: ["f"], fullPath: ["f"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "f", pathLast: "f",
generics: [ generics: [
{ {
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
@@ -32,9 +32,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "(-> F<P>)", userQuery: "(-> F<P>)",
returned: [], returned: [],
userQuery: "(-> f<p>)",
error: null, error: null,
}, },
{ {
@@ -49,7 +48,7 @@ const PARSED = [
[ [
"output", "output",
[{ [{
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
@@ -61,9 +60,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "(-> P)", userQuery: "(-> P)",
returned: [], returned: [],
userQuery: "(-> p)",
error: null, error: null,
}, },
{ {
@@ -90,9 +88,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "(->,a)",
returned: [],
userQuery: "(->,a)", userQuery: "(->,a)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -103,13 +100,13 @@ const PARSED = [
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "->", pathLast: "->",
generics: [{ generics: [{
name: "f", name: "F",
fullPath: ["f"], fullPath: ["f"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "f", pathLast: "f",
generics: [ generics: [
{ {
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
@@ -127,9 +124,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "(F<P> ->)", userQuery: "(F<P> ->)",
returned: [], returned: [],
userQuery: "(f<p> ->)",
error: null, error: null,
}, },
{ {
@@ -140,7 +136,7 @@ const PARSED = [
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "->", pathLast: "->",
generics: [{ generics: [{
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
@@ -156,9 +152,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "(P ->)", userQuery: "(P ->)",
returned: [], returned: [],
userQuery: "(p ->)",
error: null, error: null,
}, },
{ {
@@ -185,9 +180,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "(,a->)",
returned: [],
userQuery: "(,a->)", userQuery: "(,a->)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -221,9 +215,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "(aaaaa->a)",
returned: [],
userQuery: "(aaaaa->a)", userQuery: "(aaaaa->a)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -267,9 +260,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "(aaaaa, b -> a)",
returned: [],
userQuery: "(aaaaa, b -> a)", userQuery: "(aaaaa, b -> a)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -313,9 +305,8 @@ const PARSED = [
typeFilter: 1, typeFilter: 1,
}], }],
foundElems: 1, foundElems: 1,
original: "primitive:(aaaaa, b -> a)",
returned: [],
userQuery: "primitive:(aaaaa, b -> a)", userQuery: "primitive:(aaaaa, b -> a)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -369,16 +360,15 @@ const PARSED = [
} }
], ],
foundElems: 2, foundElems: 2,
original: "x, trait:(aaaaa, b -> a)",
returned: [],
userQuery: "x, trait:(aaaaa, b -> a)", userQuery: "x, trait:(aaaaa, b -> a)",
returned: [],
error: null, error: null,
}, },
// Rust-style HOF // Rust-style HOF
{ {
query: "Fn () -> F<P>", query: "Fn () -> F<P>",
elems: [{ elems: [{
name: "fn", name: "Fn",
fullPath: ["fn"], fullPath: ["fn"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "fn", pathLast: "fn",
@@ -387,13 +377,13 @@ const PARSED = [
[ [
"output", "output",
[{ [{
name: "f", name: "F",
fullPath: ["f"], fullPath: ["f"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "f", pathLast: "f",
generics: [ generics: [
{ {
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
@@ -407,15 +397,14 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "Fn () -> F<P>", userQuery: "Fn () -> F<P>",
returned: [], returned: [],
userQuery: "fn () -> f<p>",
error: null, error: null,
}, },
{ {
query: "FnMut() -> P", query: "FnMut() -> P",
elems: [{ elems: [{
name: "fnmut", name: "FnMut",
fullPath: ["fnmut"], fullPath: ["fnmut"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "fnmut", pathLast: "fnmut",
@@ -424,7 +413,7 @@ const PARSED = [
[ [
"output", "output",
[{ [{
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
@@ -436,15 +425,14 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "FnMut() -> P", userQuery: "FnMut() -> P",
returned: [], returned: [],
userQuery: "fnmut() -> p",
error: null, error: null,
}, },
{ {
query: "(FnMut() -> P)", query: "(FnMut() -> P)",
elems: [{ elems: [{
name: "fnmut", name: "FnMut",
fullPath: ["fnmut"], fullPath: ["fnmut"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "fnmut", pathLast: "fnmut",
@@ -453,7 +441,7 @@ const PARSED = [
[ [
"output", "output",
[{ [{
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
@@ -465,26 +453,25 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "(FnMut() -> P)", userQuery: "(FnMut() -> P)",
returned: [], returned: [],
userQuery: "(fnmut() -> p)",
error: null, error: null,
}, },
{ {
query: "Fn(F<P>)", query: "Fn(F<P>)",
elems: [{ elems: [{
name: "fn", name: "Fn",
fullPath: ["fn"], fullPath: ["fn"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "fn", pathLast: "fn",
generics: [{ generics: [{
name: "f", name: "F",
fullPath: ["f"], fullPath: ["f"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "f", pathLast: "f",
generics: [ generics: [
{ {
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
@@ -502,9 +489,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "Fn(F<P>)", userQuery: "Fn(F<P>)",
returned: [], returned: [],
userQuery: "fn(f<p>)",
error: null, error: null,
}, },
{ {
@@ -548,9 +534,8 @@ const PARSED = [
typeFilter: 1, typeFilter: 1,
}], }],
foundElems: 1, foundElems: 1,
original: "primitive:fnonce(aaaaa, b) -> a",
returned: [],
userQuery: "primitive:fnonce(aaaaa, b) -> a", userQuery: "primitive:fnonce(aaaaa, b) -> a",
returned: [],
error: null, error: null,
}, },
{ {
@@ -594,9 +579,8 @@ const PARSED = [
typeFilter: 1, typeFilter: 1,
}], }],
foundElems: 1, foundElems: 1,
original: "primitive:fnonce(aaaaa, keyword:b) -> trait:a",
returned: [],
userQuery: "primitive:fnonce(aaaaa, keyword:b) -> trait:a", userQuery: "primitive:fnonce(aaaaa, keyword:b) -> trait:a",
returned: [],
error: null, error: null,
}, },
{ {
@@ -665,9 +649,8 @@ const PARSED = [
} }
], ],
foundElems: 2, foundElems: 2,
original: "x, trait:fn(aaaaa, b -> a)",
returned: [],
userQuery: "x, trait:fn(aaaaa, b -> a)", userQuery: "x, trait:fn(aaaaa, b -> a)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -704,9 +687,8 @@ const PARSED = [
} }
], ],
foundElems: 2, foundElems: 2,
original: "a,b(c)",
returned: [],
userQuery: "a,b(c)", userQuery: "a,b(c)",
returned: [],
error: null, error: null,
}, },
]; ];

View File

@@ -2,7 +2,7 @@ const PARSED = [
{ {
query: "R<!>", query: "R<!>",
elems: [{ elems: [{
name: "r", name: "R",
fullPath: ["r"], fullPath: ["r"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "r", pathLast: "r",
@@ -19,9 +19,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "R<!>", userQuery: "R<!>",
returned: [], returned: [],
userQuery: "r<!>",
error: null, error: null,
}, },
{ {
@@ -35,9 +34,8 @@ const PARSED = [
typeFilter: 1, typeFilter: 1,
}], }],
foundElems: 1, foundElems: 1,
original: "!",
returned: [],
userQuery: "!", userQuery: "!",
returned: [],
error: null, error: null,
}, },
{ {
@@ -51,27 +49,24 @@ const PARSED = [
typeFilter: 16, typeFilter: 16,
}], }],
foundElems: 1, foundElems: 1,
original: "a!",
returned: [],
userQuery: "a!", userQuery: "a!",
returned: [],
error: null, error: null,
}, },
{ {
query: "a!::b", query: "a!::b",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a!::b",
returned: [],
userQuery: "a!::b", userQuery: "a!::b",
returned: [],
error: "Cannot have associated items in macros", error: "Cannot have associated items in macros",
}, },
{ {
query: "!<T>", query: "!<T>",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "!<T>", userQuery: "!<T>",
returned: [], returned: [],
userQuery: "!<t>",
error: "Never type `!` does not accept generic parameters", error: "Never type `!` does not accept generic parameters",
}, },
{ {
@@ -85,36 +80,32 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "!::b",
returned: [],
userQuery: "!::b", userQuery: "!::b",
returned: [],
error: null, error: null,
}, },
{ {
query: "b::!", query: "b::!",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "b::!",
returned: [],
userQuery: "b::!", userQuery: "b::!",
returned: [],
error: "Never type `!` is not associated item", error: "Never type `!` is not associated item",
}, },
{ {
query: "!::!", query: "!::!",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "!::!",
returned: [],
userQuery: "!::!", userQuery: "!::!",
returned: [],
error: "Never type `!` is not associated item", error: "Never type `!` is not associated item",
}, },
{ {
query: "b::!::c", query: "b::!::c",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "b::!::c",
returned: [],
userQuery: "b::!::c", userQuery: "b::!::c",
returned: [],
error: "Never type `!` is not associated item", error: "Never type `!` is not associated item",
}, },
{ {
@@ -126,7 +117,7 @@ const PARSED = [
pathLast: "b", pathLast: "b",
generics: [ generics: [
{ {
name: "t", name: "T",
fullPath: ["t"], fullPath: ["t"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "t", pathLast: "t",
@@ -137,18 +128,16 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "!::b<T>", userQuery: "!::b<T>",
returned: [], returned: [],
userQuery: "!::b<t>",
error: null, error: null,
}, },
{ {
query: "a!::b!", query: "a!::b!",
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a!::b!",
returned: [],
userQuery: "a!::b!", userQuery: "a!::b!",
returned: [],
error: "Cannot have associated items in macros", error: "Cannot have associated items in macros",
}, },
]; ];

View File

@@ -2,13 +2,13 @@ const PARSED = [
{ {
query: 'R<P>', query: 'R<P>',
elems: [{ elems: [{
name: "r", name: "R",
fullPath: ["r"], fullPath: ["r"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "r", pathLast: "r",
generics: [ generics: [
{ {
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
@@ -18,9 +18,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "R<P>", userQuery: "R<P>",
returned: [], returned: [],
userQuery: "r<p>",
error: null, error: null,
} }
]; ];

View File

@@ -2,7 +2,7 @@ const PARSED = [
{ {
query: 'A::B', query: 'A::B',
elems: [{ elems: [{
name: "a::b", name: "A::B",
fullPath: ["a", "b"], fullPath: ["a", "b"],
pathWithoutLast: ["a"], pathWithoutLast: ["a"],
pathLast: "b", pathLast: "b",
@@ -10,9 +10,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "A::B", userQuery: "A::B",
returned: [], returned: [],
userQuery: "a::b",
error: null, error: null,
}, },
{ {
@@ -26,9 +25,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: 'a:: a',
returned: [],
userQuery: 'a:: a', userQuery: 'a:: a',
returned: [],
error: null, error: null,
}, },
{ {
@@ -42,9 +40,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: 'a ::a',
returned: [],
userQuery: 'a ::a', userQuery: 'a ::a',
returned: [],
error: null, error: null,
}, },
{ {
@@ -58,16 +55,15 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: 'a :: a',
returned: [],
userQuery: 'a :: a', userQuery: 'a :: a',
returned: [],
error: null, error: null,
}, },
{ {
query: 'A::B,C', query: 'A::B,C',
elems: [ elems: [
{ {
name: "a::b", name: "A::B",
fullPath: ["a", "b"], fullPath: ["a", "b"],
pathWithoutLast: ["a"], pathWithoutLast: ["a"],
pathLast: "b", pathLast: "b",
@@ -75,7 +71,7 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}, },
{ {
name: "c", name: "C",
fullPath: ["c"], fullPath: ["c"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "c", pathLast: "c",
@@ -84,16 +80,15 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: 'A::B,C', userQuery: 'A::B,C',
returned: [], returned: [],
userQuery: 'a::b,c',
error: null, error: null,
}, },
{ {
query: 'A::B<f>,C', query: 'A::B<f>,C',
elems: [ elems: [
{ {
name: "a::b", name: "A::B",
fullPath: ["a", "b"], fullPath: ["a", "b"],
pathWithoutLast: ["a"], pathWithoutLast: ["a"],
pathLast: "b", pathLast: "b",
@@ -109,7 +104,7 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}, },
{ {
name: "c", name: "C",
fullPath: ["c"], fullPath: ["c"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "c", pathLast: "c",
@@ -118,9 +113,8 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: 'A::B<f>,C', userQuery: 'A::B<f>,C',
returned: [], returned: [],
userQuery: 'a::b<f>,c',
error: null, error: null,
}, },
{ {
@@ -134,9 +128,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "mod::a",
returned: [],
userQuery: "mod::a", userQuery: "mod::a",
returned: [],
error: null, error: null,
}, },
]; ];

View File

@@ -3,7 +3,7 @@ const PARSED = [
query: '-> "p"', query: '-> "p"',
elems: [], elems: [],
foundElems: 1, foundElems: 1,
original: '-> "p"', userQuery: '-> "p"',
returned: [{ returned: [{
name: "p", name: "p",
fullPath: ["p"], fullPath: ["p"],
@@ -12,7 +12,6 @@ const PARSED = [
generics: [], generics: [],
typeFilter: -1, typeFilter: -1,
}], }],
userQuery: '-> "p"',
error: null, error: null,
}, },
{ {
@@ -26,54 +25,48 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: '"p",',
returned: [],
userQuery: '"p",', userQuery: '"p",',
returned: [],
error: null, error: null,
}, },
{ {
query: '"p" -> a', query: '"p" -> a',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '"p" -> a',
returned: [],
userQuery: '"p" -> a', userQuery: '"p" -> a',
returned: [],
error: "Cannot have more than one element if you use quotes", error: "Cannot have more than one element if you use quotes",
}, },
{ {
query: '"a" -> "p"', query: '"a" -> "p"',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '"a" -> "p"',
returned: [],
userQuery: '"a" -> "p"', userQuery: '"a" -> "p"',
returned: [],
error: "Cannot have more than one literal search element", error: "Cannot have more than one literal search element",
}, },
{ {
query: '->"-"', query: '->"-"',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '->"-"',
returned: [],
userQuery: '->"-"', userQuery: '->"-"',
returned: [],
error: 'Unexpected `-` in a string element', error: 'Unexpected `-` in a string element',
}, },
{ {
query: '"a', query: '"a',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '"a',
returned: [],
userQuery: '"a', userQuery: '"a',
returned: [],
error: 'Unclosed `"`', error: 'Unclosed `"`',
}, },
{ {
query: '""', query: '""',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '""',
returned: [],
userQuery: '""', userQuery: '""',
returned: [],
error: 'Cannot have empty string element', error: 'Cannot have empty string element',
}, },
]; ];

View File

@@ -3,18 +3,16 @@ const PARSED = [
query: '&[', query: '&[',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '&[',
returned: [],
userQuery: '&[', userQuery: '&[',
returned: [],
error: 'Unclosed `[`', error: 'Unclosed `[`',
}, },
{ {
query: '[&', query: '[&',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '[&',
returned: [],
userQuery: '[&', userQuery: '[&',
returned: [],
error: 'Unclosed `[`', error: 'Unclosed `[`',
}, },
{ {
@@ -39,7 +37,7 @@ const PARSED = [
pathLast: "reference", pathLast: "reference",
generics: [ generics: [
{ {
name: "d", name: "D",
fullPath: ["d"], fullPath: ["d"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "d", pathLast: "d",
@@ -65,9 +63,8 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: '&&&D, []', userQuery: '&&&D, []',
returned: [], returned: [],
userQuery: '&&&d, []',
error: null, error: null,
}, },
{ {
@@ -98,7 +95,7 @@ const PARSED = [
pathLast: "[]", pathLast: "[]",
generics: [ generics: [
{ {
name: "d", name: "D",
fullPath: ["d"], fullPath: ["d"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "d", pathLast: "d",
@@ -119,9 +116,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: '&&&[D]', userQuery: '&&&[D]',
returned: [], returned: [],
userQuery: '&&&[d]',
error: null, error: null,
}, },
{ {
@@ -137,9 +133,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: '&',
returned: [],
userQuery: '&', userQuery: '&',
returned: [],
error: null, error: null,
}, },
{ {
@@ -164,9 +159,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: '&mut',
returned: [],
userQuery: '&mut', userQuery: '&mut',
returned: [],
error: null, error: null,
}, },
{ {
@@ -190,9 +184,8 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: "&,u8",
returned: [],
userQuery: "&,u8", userQuery: "&,u8",
returned: [],
error: null, error: null,
}, },
{ {
@@ -225,9 +218,8 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: "&mut,u8",
returned: [],
userQuery: "&mut,u8", userQuery: "&mut,u8",
returned: [],
error: null, error: null,
}, },
{ {
@@ -252,9 +244,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "&u8",
returned: [],
userQuery: "&u8", userQuery: "&u8",
returned: [],
error: null, error: null,
}, },
{ {
@@ -288,9 +279,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "&u8<u8>",
returned: [],
userQuery: "&u8<u8>", userQuery: "&u8<u8>",
returned: [],
error: null, error: null,
}, },
{ {
@@ -324,9 +314,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "u8<&u8>",
returned: [],
userQuery: "u8<&u8>", userQuery: "u8<&u8>",
returned: [],
error: null, error: null,
}, },
{ {
@@ -368,9 +357,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "u8<&u8, u8>",
returned: [],
userQuery: "u8<&u8, u8>", userQuery: "u8<&u8, u8>",
returned: [],
error: null, error: null,
}, },
{ {
@@ -404,9 +392,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "u8<&u8>",
returned: [],
userQuery: "u8<&u8>", userQuery: "u8<&u8>",
returned: [],
error: null, error: null,
}, },
{ {
@@ -456,9 +443,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "u8<&mut u8, u8>",
returned: [],
userQuery: "u8<&mut u8, u8>", userQuery: "u8<&mut u8, u8>",
returned: [],
error: null, error: null,
}, },
{ {
@@ -483,18 +469,16 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "primitive:&u8",
returned: [],
userQuery: "primitive:&u8", userQuery: "primitive:&u8",
returned: [],
error: null, error: null,
}, },
{ {
query: 'macro:&u8', query: 'macro:&u8',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "macro:&u8",
returned: [],
userQuery: "macro:&u8", userQuery: "macro:&u8",
returned: [],
error: "Invalid search type: primitive `&` and `macro` both specified", error: "Invalid search type: primitive `&` and `macro` both specified",
}, },
{ {
@@ -519,9 +503,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "&macro:u8",
returned: [],
userQuery: "&macro:u8", userQuery: "&macro:u8",
returned: [],
error: null, error: null,
}, },
]; ];

View File

@@ -3,15 +3,15 @@ const PARSED = [
query: "-> F<P>", query: "-> F<P>",
elems: [], elems: [],
foundElems: 1, foundElems: 1,
original: "-> F<P>", userQuery: "-> F<P>",
returned: [{ returned: [{
name: "f", name: "F",
fullPath: ["f"], fullPath: ["f"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "f", pathLast: "f",
generics: [ generics: [
{ {
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
@@ -20,30 +20,28 @@ const PARSED = [
], ],
typeFilter: -1, typeFilter: -1,
}], }],
userQuery: "-> f<p>",
error: null, error: null,
}, },
{ {
query: "-> P", query: "-> P",
elems: [], elems: [],
foundElems: 1, foundElems: 1,
original: "-> P", userQuery: "-> P",
returned: [{ returned: [{
name: "p", name: "P",
fullPath: ["p"], fullPath: ["p"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "p", pathLast: "p",
generics: [], generics: [],
typeFilter: -1, typeFilter: -1,
}], }],
userQuery: "-> p",
error: null, error: null,
}, },
{ {
query: "->,a", query: "->,a",
elems: [], elems: [],
foundElems: 1, foundElems: 1,
original: "->,a", userQuery: "->,a",
returned: [{ returned: [{
name: "a", name: "a",
fullPath: ["a"], fullPath: ["a"],
@@ -52,7 +50,6 @@ const PARSED = [
generics: [], generics: [],
typeFilter: -1, typeFilter: -1,
}], }],
userQuery: "->,a",
error: null, error: null,
}, },
{ {
@@ -66,7 +63,7 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 2, foundElems: 2,
original: "aaaaa->a", userQuery: "aaaaa->a",
returned: [{ returned: [{
name: "a", name: "a",
fullPath: ["a"], fullPath: ["a"],
@@ -75,14 +72,13 @@ const PARSED = [
generics: [], generics: [],
typeFilter: -1, typeFilter: -1,
}], }],
userQuery: "aaaaa->a",
error: null, error: null,
}, },
{ {
query: "-> !", query: "-> !",
elems: [], elems: [],
foundElems: 1, foundElems: 1,
original: "-> !", userQuery: "-> !",
returned: [{ returned: [{
name: "never", name: "never",
fullPath: ["never"], fullPath: ["never"],
@@ -91,7 +87,6 @@ const PARSED = [
generics: [], generics: [],
typeFilter: 1, typeFilter: 1,
}], }],
userQuery: "-> !",
error: null, error: null,
}, },
{ {
@@ -105,9 +100,8 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "a->",
returned: [],
userQuery: "a->", userQuery: "a->",
returned: [],
hasReturnArrow: true, hasReturnArrow: true,
error: null, error: null,
}, },
@@ -122,9 +116,8 @@ const PARSED = [
typeFilter: 1, typeFilter: 1,
}], }],
foundElems: 1, foundElems: 1,
original: "!->",
returned: [],
userQuery: "!->", userQuery: "!->",
returned: [],
hasReturnArrow: true, hasReturnArrow: true,
error: null, error: null,
}, },
@@ -139,9 +132,8 @@ const PARSED = [
typeFilter: 1, typeFilter: 1,
}], }],
foundElems: 1, foundElems: 1,
original: "! ->",
returned: [],
userQuery: "! ->", userQuery: "! ->",
returned: [],
hasReturnArrow: true, hasReturnArrow: true,
error: null, error: null,
}, },
@@ -156,9 +148,8 @@ const PARSED = [
typeFilter: 1, typeFilter: 1,
}], }],
foundElems: 1, foundElems: 1,
original: "primitive:!->",
returned: [],
userQuery: "primitive:!->", userQuery: "primitive:!->",
returned: [],
hasReturnArrow: true, hasReturnArrow: true,
error: null, error: null,
}, },

View File

@@ -14,9 +14,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "aaaaaa b",
returned: [],
userQuery: "aaaaaa b", userQuery: "aaaaaa b",
returned: [],
error: null, error: null,
}, },
{ {
@@ -40,9 +39,8 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: "aaaaaa, b",
returned: [],
userQuery: "aaaaaa, b", userQuery: "aaaaaa, b",
returned: [],
error: null, error: null,
}, },
{ {
@@ -58,9 +56,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "a b",
returned: [],
userQuery: "a b", userQuery: "a b",
returned: [],
error: null, error: null,
}, },
{ {
@@ -84,9 +81,8 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: "a,b",
returned: [],
userQuery: "a,b", userQuery: "a,b",
returned: [],
error: null, error: null,
}, },
{ {
@@ -102,9 +98,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "a b",
returned: [],
userQuery: "a b", userQuery: "a b",
returned: [],
error: null, error: null,
}, },
{ {
@@ -128,9 +123,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "a<b c>",
returned: [],
userQuery: "a<b c>", userQuery: "a<b c>",
returned: [],
error: null, error: null,
}, },
{ {
@@ -161,9 +155,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "a<b,c>",
returned: [],
userQuery: "a<b,c>", userQuery: "a<b,c>",
returned: [],
error: null, error: null,
}, },
{ {
@@ -187,9 +180,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "a<b c>",
returned: [],
userQuery: "a<b c>", userQuery: "a<b c>",
returned: [],
error: null, error: null,
}, },
]; ];

View File

@@ -3,9 +3,8 @@ const PARSED = [
query: '[[[D, []]]', query: '[[[D, []]]',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '[[[D, []]]', userQuery: '[[[D, []]]',
returned: [], returned: [],
userQuery: '[[[d, []]]',
error: 'Unclosed `[`', error: 'Unclosed `[`',
}, },
{ {
@@ -30,7 +29,7 @@ const PARSED = [
pathLast: "[]", pathLast: "[]",
generics: [ generics: [
{ {
name: "d", name: "D",
fullPath: ["d"], fullPath: ["d"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "d", pathLast: "d",
@@ -56,9 +55,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: '[[[D, []]]]', userQuery: '[[[D, []]]]',
returned: [], returned: [],
userQuery: '[[[d, []]]]',
error: null, error: null,
}, },
{ {
@@ -82,9 +80,8 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: "[],u8",
returned: [],
userQuery: "[],u8", userQuery: "[],u8",
returned: [],
error: null, error: null,
}, },
{ {
@@ -109,9 +106,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "[u8]",
returned: [],
userQuery: "[u8]", userQuery: "[u8]",
returned: [],
error: null, error: null,
}, },
{ {
@@ -144,9 +140,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "[u8,u8]",
returned: [],
userQuery: "[u8,u8]", userQuery: "[u8,u8]",
returned: [],
error: null, error: null,
}, },
{ {
@@ -180,9 +175,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "[u8<u8>]",
returned: [],
userQuery: "[u8<u8>]", userQuery: "[u8<u8>]",
returned: [],
error: null, error: null,
}, },
{ {
@@ -198,90 +192,80 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "[]",
returned: [],
userQuery: "[]", userQuery: "[]",
returned: [],
error: null, error: null,
}, },
{ {
query: '[>', query: '[>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "[>",
returned: [],
userQuery: "[>", userQuery: "[>",
returned: [],
error: "Unexpected `>` after `[`", error: "Unexpected `>` after `[`",
}, },
{ {
query: '[<', query: '[<',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "[<",
returned: [],
userQuery: "[<", userQuery: "[<",
returned: [],
error: "Found generics without a path", error: "Found generics without a path",
}, },
{ {
query: '[a>', query: '[a>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "[a>",
returned: [],
userQuery: "[a>", userQuery: "[a>",
returned: [],
error: "Unexpected `>` after `[`", error: "Unexpected `>` after `[`",
}, },
{ {
query: '[a<', query: '[a<',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "[a<",
returned: [],
userQuery: "[a<", userQuery: "[a<",
returned: [],
error: "Unclosed `<`", error: "Unclosed `<`",
}, },
{ {
query: '[a', query: '[a',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "[a",
returned: [],
userQuery: "[a", userQuery: "[a",
returned: [],
error: "Unclosed `[`", error: "Unclosed `[`",
}, },
{ {
query: '[', query: '[',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "[",
returned: [],
userQuery: "[", userQuery: "[",
returned: [],
error: "Unclosed `[`", error: "Unclosed `[`",
}, },
{ {
query: ']', query: ']',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "]",
returned: [],
userQuery: "]", userQuery: "]",
returned: [],
error: "Unexpected `]`", error: "Unexpected `]`",
}, },
{ {
query: '[a<b>', query: '[a<b>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "[a<b>",
returned: [],
userQuery: "[a<b>", userQuery: "[a<b>",
returned: [],
error: "Unclosed `[`", error: "Unclosed `[`",
}, },
{ {
query: 'a<b>]', query: 'a<b>]',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a<b>]",
returned: [],
userQuery: "a<b>]", userQuery: "a<b>]",
returned: [],
error: "Unexpected `]` after `>`", error: "Unexpected `]` after `>`",
}, },
{ {
@@ -306,18 +290,16 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "primitive:[u8]",
returned: [],
userQuery: "primitive:[u8]", userQuery: "primitive:[u8]",
returned: [],
error: null, error: null,
}, },
{ {
query: 'macro:[u8]', query: 'macro:[u8]',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "macro:[u8]",
returned: [],
userQuery: "macro:[u8]", userQuery: "macro:[u8]",
returned: [],
error: "Invalid search type: primitive `[]` and `macro` both specified", error: "Invalid search type: primitive `[]` and `macro` both specified",
}, },
]; ];

View File

@@ -3,9 +3,8 @@ const PARSED = [
query: '(((D, ()))', query: '(((D, ()))',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: '(((D, ()))', userQuery: '(((D, ()))',
returned: [], returned: [],
userQuery: '(((d, ()))',
error: 'Unclosed `(`', error: 'Unclosed `(`',
}, },
{ {
@@ -18,7 +17,7 @@ const PARSED = [
pathLast: "()", pathLast: "()",
generics: [ generics: [
{ {
name: "d", name: "D",
fullPath: ["d"], fullPath: ["d"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "d", pathLast: "d",
@@ -38,9 +37,8 @@ const PARSED = [
} }
], ],
foundElems: 1, foundElems: 1,
original: '(((D, ())))', userQuery: '(((D, ())))',
returned: [], returned: [],
userQuery: '(((d, ())))',
error: null, error: null,
}, },
{ {
@@ -64,9 +62,8 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: "(),u8",
returned: [],
userQuery: "(),u8", userQuery: "(),u8",
returned: [],
error: null, error: null,
}, },
// Parens act as grouping operators when: // Parens act as grouping operators when:
@@ -88,9 +85,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "(u8)",
returned: [],
userQuery: "(u8)", userQuery: "(u8)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -115,9 +111,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "(u8,)",
returned: [],
userQuery: "(u8,)", userQuery: "(u8,)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -142,9 +137,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "(,u8)",
returned: [],
userQuery: "(,u8)", userQuery: "(,u8)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -169,9 +163,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "primitive:(u8)",
returned: [],
userQuery: "primitive:(u8)", userQuery: "primitive:(u8)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -187,9 +180,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "(primitive:u8)",
returned: [],
userQuery: "(primitive:u8)", userQuery: "(primitive:u8)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -222,9 +214,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "(u8,u8)",
returned: [],
userQuery: "(u8,u8)", userQuery: "(u8,u8)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -249,9 +240,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "(u8<u8>)",
returned: [],
userQuery: "(u8<u8>)", userQuery: "(u8<u8>)",
returned: [],
error: null, error: null,
}, },
{ {
@@ -267,99 +257,88 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "()",
returned: [],
userQuery: "()", userQuery: "()",
returned: [],
error: null, error: null,
}, },
{ {
query: '(>', query: '(>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "(>",
returned: [],
userQuery: "(>", userQuery: "(>",
returned: [],
error: "Unexpected `>` after `(`", error: "Unexpected `>` after `(`",
}, },
{ {
query: '(<', query: '(<',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "(<",
returned: [],
userQuery: "(<", userQuery: "(<",
returned: [],
error: "Found generics without a path", error: "Found generics without a path",
}, },
{ {
query: '(a>', query: '(a>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "(a>",
returned: [],
userQuery: "(a>", userQuery: "(a>",
returned: [],
error: "Unexpected `>` after `(`", error: "Unexpected `>` after `(`",
}, },
{ {
query: '(a<', query: '(a<',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "(a<",
returned: [],
userQuery: "(a<", userQuery: "(a<",
returned: [],
error: "Unclosed `<`", error: "Unclosed `<`",
}, },
{ {
query: '(a', query: '(a',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "(a",
returned: [],
userQuery: "(a", userQuery: "(a",
returned: [],
error: "Unclosed `(`", error: "Unclosed `(`",
}, },
{ {
query: '(', query: '(',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "(",
returned: [],
userQuery: "(", userQuery: "(",
returned: [],
error: "Unclosed `(`", error: "Unclosed `(`",
}, },
{ {
query: ')', query: ')',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: ")",
returned: [],
userQuery: ")", userQuery: ")",
returned: [],
error: "Unexpected `)`", error: "Unexpected `)`",
}, },
{ {
query: '(a<b>', query: '(a<b>',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "(a<b>",
returned: [],
userQuery: "(a<b>", userQuery: "(a<b>",
returned: [],
error: "Unclosed `(`", error: "Unclosed `(`",
}, },
{ {
query: 'a<b>)', query: 'a<b>)',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "a<b>)",
returned: [],
userQuery: "a<b>)", userQuery: "a<b>)",
returned: [],
error: "Unexpected `)` after `>`", error: "Unexpected `)` after `>`",
}, },
{ {
query: 'macro:(u8)', query: 'macro:(u8)',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "macro:(u8)",
returned: [],
userQuery: "macro:(u8)", userQuery: "macro:(u8)",
returned: [],
error: "Invalid search type: primitive `()` and `macro` both specified", error: "Invalid search type: primitive `()` and `macro` both specified",
}, },
]; ];

View File

@@ -15,9 +15,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "a b",
returned: [],
userQuery: "a b", userQuery: "a b",
returned: [],
error: null, error: null,
}, },
{ {
@@ -32,9 +31,8 @@ const PARSED = [
}, },
], ],
foundElems: 1, foundElems: 1,
original: "a b",
returned: [],
userQuery: "a b", userQuery: "a b",
returned: [],
error: null, error: null,
}, },
{ {
@@ -56,36 +54,32 @@ const PARSED = [
}, },
], ],
foundElems: 2, foundElems: 2,
original: "aaa,a",
returned: [],
userQuery: "aaa,a", userQuery: "aaa,a",
returned: [],
error: null, error: null,
}, },
{ {
query: ',,,,', query: ',,,,',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: ",,,,",
returned: [],
userQuery: ",,,,", userQuery: ",,,,",
returned: [],
error: null, error: null,
}, },
{ {
query: 'mod :', query: 'mod :',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: 'mod :',
returned: [],
userQuery: 'mod :', userQuery: 'mod :',
returned: [],
error: "Unexpected `:` (expected path after type filter `mod:`)", error: "Unexpected `:` (expected path after type filter `mod:`)",
}, },
{ {
query: 'mod\t:', query: 'mod\t:',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: 'mod :',
returned: [],
userQuery: 'mod :', userQuery: 'mod :',
returned: [],
error: "Unexpected `:` (expected path after type filter `mod:`)", error: "Unexpected `:` (expected path after type filter `mod:`)",
}, },
]; ];

View File

@@ -11,30 +11,29 @@ const PARSED = [
}], }],
returned: [], returned: [],
foundElems: 1, foundElems: 1,
original: "中文",
userQuery: "中文", userQuery: "中文",
error: null, error: null,
}, },
{ {
query: '_0Mixed中英文', query: '_0Mixed中英文',
elems: [{ elems: [{
name: "_0mixed中英文", name: "_0Mixed中英文",
fullPath: ["_0mixed中英文"], fullPath: ["_0mixed中英文"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "_0mixed中英文", pathLast: "_0mixed中英文",
normalizedPathLast: "0mixed中英文",
generics: [], generics: [],
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "_0Mixed中英文", userQuery: "_0Mixed中英文",
returned: [], returned: [],
userQuery: "_0mixed中英文",
error: null, error: null,
}, },
{ {
query: 'my_crate::中文API', query: 'my_crate::中文API',
elems: [{ elems: [{
name: "my_crate::中文api", name: "my_crate::中文API",
fullPath: ["my_crate", "中文api"], fullPath: ["my_crate", "中文api"],
pathWithoutLast: ["my_crate"], pathWithoutLast: ["my_crate"],
pathLast: "中文api", pathLast: "中文api",
@@ -42,26 +41,25 @@ const PARSED = [
typeFilter: -1, typeFilter: -1,
}], }],
foundElems: 1, foundElems: 1,
original: "my_crate::中文API", userQuery: "my_crate::中文API",
returned: [], returned: [],
userQuery: "my_crate::中文api",
error: null, error: null,
}, },
{ {
query: '类型A,类型B<约束C>->返回类型<关联类型=路径::约束D>', query: '类型A,类型B<约束C>->返回类型<关联类型=路径::约束D>',
elems: [{ elems: [{
name: "类型a", name: "类型A",
fullPath: ["类型a"], fullPath: ["类型a"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "类型a", pathLast: "类型a",
generics: [], generics: [],
}, { }, {
name: "类型b", name: "类型B",
fullPath: ["类型b"], fullPath: ["类型b"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "类型b", pathLast: "类型b",
generics: [{ generics: [{
name: "约束c", name: "约束C",
fullPath: ["约束c"], fullPath: ["约束c"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "约束c", pathLast: "约束c",
@@ -71,15 +69,21 @@ const PARSED = [
foundElems: 3, foundElems: 3,
totalElems: 5, totalElems: 5,
literalSearch: true, literalSearch: true,
original: "类型A,类型B<约束C>->返回类型<关联类型=路径::约束D>", userQuery: "类型A,类型B<约束C>->返回类型<关联类型=路径::约束D>",
returned: [{ returned: [{
name: "返回类型", name: "返回类型",
fullPath: ["返回类型"], fullPath: ["返回类型"],
pathWithoutLast: [], pathWithoutLast: [],
pathLast: "返回类型", pathLast: "返回类型",
generics: [], generics: [],
bindings: [["关联类型", [{
name: "路径::约束D",
fullPath: ["路径", "约束d"],
pathWithoutLast: ["路径"],
pathLast: "约束d",
generics: [],
}]]],
}], }],
userQuery: "类型a,类型b<约束c>->返回类型<关联类型=路径::约束d>",
error: null, error: null,
}, },
{ {
@@ -93,18 +97,16 @@ const PARSED = [
typeFilter: 16, typeFilter: 16,
}], }],
foundElems: 1, foundElems: 1,
original: "my_crate 中文宏!",
returned: [],
userQuery: "my_crate 中文宏!", userQuery: "my_crate 中文宏!",
returned: [],
error: null, error: null,
}, },
{ {
query: '非法符号——', query: '非法符号——',
elems: [], elems: [],
foundElems: 0, foundElems: 0,
original: "非法符号——",
returned: [],
userQuery: "非法符号——", userQuery: "非法符号——",
returned: [],
error: "Unexpected `—` after `号` (not a valid identifier)", error: "Unexpected `—` after `号` (not a valid identifier)",
} }
] ]