rustdoc: search for tuples and unit by type with ()
This commit is contained in:
parent
a75fed74b6
commit
f6a045cc6b
9 changed files with 616 additions and 54 deletions
|
@ -24,7 +24,7 @@ const PARSED = [
|
|||
original: "-> *",
|
||||
returned: [],
|
||||
userQuery: "-> *",
|
||||
error: "Unexpected `*`",
|
||||
error: "Unexpected `*` after ` `",
|
||||
},
|
||||
{
|
||||
query: 'a<"P">',
|
||||
|
@ -107,15 +107,6 @@ const PARSED = [
|
|||
userQuery: "a<::a>",
|
||||
error: "Unexpected `::`: paths cannot start with `::`",
|
||||
},
|
||||
{
|
||||
query: "((a))",
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "((a))",
|
||||
returned: [],
|
||||
userQuery: "((a))",
|
||||
error: "Unexpected `(`",
|
||||
},
|
||||
{
|
||||
query: "(p -> p",
|
||||
elems: [],
|
||||
|
@ -123,7 +114,7 @@ const PARSED = [
|
|||
original: "(p -> p",
|
||||
returned: [],
|
||||
userQuery: "(p -> p",
|
||||
error: "Unexpected `(`",
|
||||
error: "Unexpected `-` after `(`",
|
||||
},
|
||||
{
|
||||
query: "::a::b",
|
||||
|
@ -204,7 +195,7 @@ const PARSED = [
|
|||
original: "a (b:",
|
||||
returned: [],
|
||||
userQuery: "a (b:",
|
||||
error: "Unexpected `(`",
|
||||
error: "Expected `,`, `:` or `->`, found `(`",
|
||||
},
|
||||
{
|
||||
query: "_:",
|
||||
|
@ -249,7 +240,7 @@ const PARSED = [
|
|||
original: "ab'",
|
||||
returned: [],
|
||||
userQuery: "ab'",
|
||||
error: "Unexpected `'`",
|
||||
error: "Unexpected `'` after `b`",
|
||||
},
|
||||
{
|
||||
query: "a->",
|
||||
|
|
|
@ -266,6 +266,24 @@ const PARSED = [
|
|||
userQuery: "]",
|
||||
error: "Unexpected `]`",
|
||||
},
|
||||
{
|
||||
query: '[a<b>',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "[a<b>",
|
||||
returned: [],
|
||||
userQuery: "[a<b>",
|
||||
error: "Unclosed `[`",
|
||||
},
|
||||
{
|
||||
query: 'a<b>]',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "a<b>]",
|
||||
returned: [],
|
||||
userQuery: "a<b>]",
|
||||
error: "Unexpected `]` after `>`",
|
||||
},
|
||||
{
|
||||
query: 'primitive:[u8]',
|
||||
elems: [
|
||||
|
|
365
tests/rustdoc-js-std/parser-tuple.js
Normal file
365
tests/rustdoc-js-std/parser-tuple.js
Normal file
|
@ -0,0 +1,365 @@
|
|||
const PARSED = [
|
||||
{
|
||||
query: '(((D, ()))',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: '(((D, ()))',
|
||||
returned: [],
|
||||
userQuery: '(((d, ()))',
|
||||
error: 'Unclosed `(`',
|
||||
},
|
||||
{
|
||||
query: '(((D, ())))',
|
||||
elems: [
|
||||
{
|
||||
name: "()",
|
||||
fullPath: ["()"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "()",
|
||||
generics: [
|
||||
{
|
||||
name: "d",
|
||||
fullPath: ["d"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "d",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
},
|
||||
{
|
||||
name: "()",
|
||||
fullPath: ["()"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "()",
|
||||
generics: [],
|
||||
typeFilter: 1,
|
||||
},
|
||||
],
|
||||
typeFilter: 1,
|
||||
}
|
||||
],
|
||||
foundElems: 1,
|
||||
original: '(((D, ())))',
|
||||
returned: [],
|
||||
userQuery: '(((d, ())))',
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: '(),u8',
|
||||
elems: [
|
||||
{
|
||||
name: "()",
|
||||
fullPath: ["()"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "()",
|
||||
generics: [],
|
||||
typeFilter: 1,
|
||||
},
|
||||
{
|
||||
name: "u8",
|
||||
fullPath: ["u8"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "u8",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
},
|
||||
],
|
||||
foundElems: 2,
|
||||
original: "(),u8",
|
||||
returned: [],
|
||||
userQuery: "(),u8",
|
||||
error: null,
|
||||
},
|
||||
// Parens act as grouping operators when:
|
||||
// - there's no commas directly nested within
|
||||
// - there's at least two child types (zero means unit)
|
||||
// - it's not tagged with a type filter
|
||||
// Otherwise, they represent unit and/or tuple. To search for
|
||||
// unit or tuple specifically, use `primitive:unit` or `primitive:tuple<...>`.
|
||||
{
|
||||
query: '(u8)',
|
||||
elems: [
|
||||
{
|
||||
name: "u8",
|
||||
fullPath: ["u8"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "u8",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
},
|
||||
],
|
||||
foundElems: 1,
|
||||
original: "(u8)",
|
||||
returned: [],
|
||||
userQuery: "(u8)",
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: '(u8,)',
|
||||
elems: [
|
||||
{
|
||||
name: "()",
|
||||
fullPath: ["()"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "()",
|
||||
generics: [
|
||||
{
|
||||
name: "u8",
|
||||
fullPath: ["u8"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "u8",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
},
|
||||
],
|
||||
typeFilter: 1,
|
||||
},
|
||||
],
|
||||
foundElems: 1,
|
||||
original: "(u8,)",
|
||||
returned: [],
|
||||
userQuery: "(u8,)",
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: '(,u8)',
|
||||
elems: [
|
||||
{
|
||||
name: "()",
|
||||
fullPath: ["()"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "()",
|
||||
generics: [
|
||||
{
|
||||
name: "u8",
|
||||
fullPath: ["u8"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "u8",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
},
|
||||
],
|
||||
typeFilter: 1,
|
||||
},
|
||||
],
|
||||
foundElems: 1,
|
||||
original: "(,u8)",
|
||||
returned: [],
|
||||
userQuery: "(,u8)",
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: 'primitive:(u8)',
|
||||
elems: [
|
||||
{
|
||||
name: "()",
|
||||
fullPath: ["()"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "()",
|
||||
generics: [
|
||||
{
|
||||
name: "u8",
|
||||
fullPath: ["u8"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "u8",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
},
|
||||
],
|
||||
typeFilter: 1,
|
||||
},
|
||||
],
|
||||
foundElems: 1,
|
||||
original: "primitive:(u8)",
|
||||
returned: [],
|
||||
userQuery: "primitive:(u8)",
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: '(primitive:u8)',
|
||||
elems: [
|
||||
{
|
||||
name: "u8",
|
||||
fullPath: ["u8"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "u8",
|
||||
generics: [],
|
||||
typeFilter: 1,
|
||||
},
|
||||
],
|
||||
foundElems: 1,
|
||||
original: "(primitive:u8)",
|
||||
returned: [],
|
||||
userQuery: "(primitive:u8)",
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: '(u8,u8)',
|
||||
elems: [
|
||||
{
|
||||
name: "()",
|
||||
fullPath: ["()"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "()",
|
||||
generics: [
|
||||
{
|
||||
name: "u8",
|
||||
fullPath: ["u8"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "u8",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
},
|
||||
{
|
||||
name: "u8",
|
||||
fullPath: ["u8"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "u8",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
},
|
||||
],
|
||||
typeFilter: 1,
|
||||
},
|
||||
],
|
||||
foundElems: 1,
|
||||
original: "(u8,u8)",
|
||||
returned: [],
|
||||
userQuery: "(u8,u8)",
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: '(u8<u8>)',
|
||||
elems: [
|
||||
{
|
||||
name: "u8",
|
||||
fullPath: ["u8"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "u8",
|
||||
generics: [
|
||||
{
|
||||
name: "u8",
|
||||
fullPath: ["u8"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "u8",
|
||||
generics: [],
|
||||
typeFilter: -1,
|
||||
},
|
||||
],
|
||||
typeFilter: -1,
|
||||
},
|
||||
],
|
||||
foundElems: 1,
|
||||
original: "(u8<u8>)",
|
||||
returned: [],
|
||||
userQuery: "(u8<u8>)",
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: '()',
|
||||
elems: [
|
||||
{
|
||||
name: "()",
|
||||
fullPath: ["()"],
|
||||
pathWithoutLast: [],
|
||||
pathLast: "()",
|
||||
generics: [],
|
||||
typeFilter: 1,
|
||||
},
|
||||
],
|
||||
foundElems: 1,
|
||||
original: "()",
|
||||
returned: [],
|
||||
userQuery: "()",
|
||||
error: null,
|
||||
},
|
||||
{
|
||||
query: '(>',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "(>",
|
||||
returned: [],
|
||||
userQuery: "(>",
|
||||
error: "Unexpected `>` after `(`",
|
||||
},
|
||||
{
|
||||
query: '(<',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "(<",
|
||||
returned: [],
|
||||
userQuery: "(<",
|
||||
error: "Found generics without a path",
|
||||
},
|
||||
{
|
||||
query: '(a>',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "(a>",
|
||||
returned: [],
|
||||
userQuery: "(a>",
|
||||
error: "Unexpected `>` after `(`",
|
||||
},
|
||||
{
|
||||
query: '(a<',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "(a<",
|
||||
returned: [],
|
||||
userQuery: "(a<",
|
||||
error: "Unclosed `<`",
|
||||
},
|
||||
{
|
||||
query: '(a',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "(a",
|
||||
returned: [],
|
||||
userQuery: "(a",
|
||||
error: "Unclosed `(`",
|
||||
},
|
||||
{
|
||||
query: '(',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "(",
|
||||
returned: [],
|
||||
userQuery: "(",
|
||||
error: "Unclosed `(`",
|
||||
},
|
||||
{
|
||||
query: ')',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: ")",
|
||||
returned: [],
|
||||
userQuery: ")",
|
||||
error: "Unexpected `)`",
|
||||
},
|
||||
{
|
||||
query: '(a<b>',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "(a<b>",
|
||||
returned: [],
|
||||
userQuery: "(a<b>",
|
||||
error: "Unclosed `(`",
|
||||
},
|
||||
{
|
||||
query: 'a<b>)',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "a<b>)",
|
||||
returned: [],
|
||||
userQuery: "a<b>)",
|
||||
error: "Unexpected `)` after `>`",
|
||||
},
|
||||
{
|
||||
query: 'macro:(u8)',
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "macro:(u8)",
|
||||
returned: [],
|
||||
userQuery: "macro:(u8)",
|
||||
error: "Invalid search type: primitive `()` and `macro` both specified",
|
||||
},
|
||||
];
|
|
@ -44,7 +44,7 @@ const PARSED = [
|
|||
original: "a,b(c)",
|
||||
returned: [],
|
||||
userQuery: "a,b(c)",
|
||||
error: "Unexpected `(`",
|
||||
error: "Expected `,`, `:` or `->`, found `(`",
|
||||
},
|
||||
{
|
||||
query: 'aaa,a',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue