1
Fork 0

Auto merge of #108537 - GuillaumeGomez:rustdoc-search-whitespace-as-separator, r=notriddle

rustdoc: Allow whitespace as path separator like double colon

Fixes https://github.com/rust-lang/rust/issues/108447.

I think it makes sense since it allows more common cases, however it also makes the syntax heavier. Not sure what the rest of the team thinks about it. In any case we'll need to go through FCP.

Full explanation for the changes is available [here](https://github.com/rust-lang/rust/pull/108537#issuecomment-1589480564).

r? `@notriddle`
This commit is contained in:
bors 2023-07-02 18:49:29 +00:00
commit bf0e22b298
11 changed files with 430 additions and 187 deletions

View file

@ -33,15 +33,24 @@ const PARSED = [
original: "\"P\" \"P\"",
returned: [],
userQuery: "\"p\" \"p\"",
error: "Cannot have more than one element if you use quotes",
},
{
query: '"P","P"',
elems: [],
foundElems: 0,
original: "\"P\",\"P\"",
returned: [],
userQuery: "\"p\",\"p\"",
error: "Cannot have more than one literal search element",
},
{
query: 'P "P"',
query: "P,\"P\"",
elems: [],
foundElems: 0,
original: "P \"P\"",
original: "P,\"P\"",
returned: [],
userQuery: "p \"p\"",
userQuery: "p,\"p\"",
error: "Cannot use literal search when there is more than one element",
},
{
@ -51,7 +60,16 @@ const PARSED = [
original: "\"p\" p",
returned: [],
userQuery: "\"p\" p",
error: "You cannot have more than one element if you use quotes",
error: "Cannot have more than one element if you use quotes",
},
{
query: '"p",p',
elems: [],
foundElems: 0,
original: "\"p\",p",
returned: [],
userQuery: "\"p\",p",
error: "Cannot have more than one element if you use quotes",
},
{
query: '"const": p',
@ -60,7 +78,7 @@ const PARSED = [
original: "\"const\": p",
returned: [],
userQuery: "\"const\": p",
error: "You cannot use quotes on type filter",
error: "Cannot use quotes on type filter",
},
{
query: "a<:a>",
@ -107,6 +125,15 @@ const PARSED = [
userQuery: "::a::b",
error: "Paths cannot start with `::`",
},
{
query: " ::a::b",
elems: [],
foundElems: 0,
original: "::a::b",
returned: [],
userQuery: "::a::b",
error: "Paths cannot start with `::`",
},
{
query: "a::::b",
elems: [],
@ -135,13 +162,13 @@ const PARSED = [
error: "Expected type filter before `:`",
},
{
query: "a b:",
query: "a,b:",
elems: [],
foundElems: 0,
original: "a b:",
original: "a,b:",
returned: [],
userQuery: "a b:",
error: "Unexpected `:` (expected path after type filter)",
userQuery: "a,b:",
error: "Unexpected `:` (expected path after type filter `b:`)",
},
{
query: "a (b:",
@ -159,7 +186,7 @@ const PARSED = [
original: "_:",
returned: [],
userQuery: "_:",
error: "Unexpected `:` (expected path after type filter)",
error: "Unexpected `:` (expected path after type filter `_:`)",
},
{
query: "_:a",
@ -213,6 +240,15 @@ const PARSED = [
original: '"p" <a>',
returned: [],
userQuery: '"p" <a>',
error: "Cannot have more than one element if you use quotes",
},
{
query: '"p",<a>',
elems: [],
foundElems: 0,
original: '"p",<a>',
returned: [],
userQuery: '"p",<a>',
error: "Found generics without a path",
},
{
@ -222,7 +258,16 @@ const PARSED = [
original: '"p" a<a>',
returned: [],
userQuery: '"p" a<a>',
error: "You 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>',
elems: [],
foundElems: 0,
original: '"p",a<a>',
returned: [],
userQuery: '"p",a<a>',
error: "Cannot have more than one element if you use quotes",
},
{
query: "a,<",
@ -240,7 +285,7 @@ const PARSED = [
original: 'aaaaa<>b',
returned: [],
userQuery: 'aaaaa<>b',
error: 'Expected `,`, ` `, `:` or `->`, found `b`',
error: 'Expected `,`, `:` or `->` after `>`, found `b`',
},
{
query: "fn:aaaaa<>b",
@ -249,7 +294,7 @@ const PARSED = [
original: 'fn:aaaaa<>b',
returned: [],
userQuery: 'fn:aaaaa<>b',
error: 'Expected `,`, ` `, `:` or `->`, found `b`',
error: 'Expected `,`, `:` or `->` after `>`, found `b`',
},
{
query: "->a<>b",
@ -258,7 +303,7 @@ const PARSED = [
original: '->a<>b',
returned: [],
userQuery: '->a<>b',
error: 'Expected `,` or ` `, found `b`',
error: 'Expected `,` after `>`, found `b`',
},
{
query: "a<->",
@ -276,7 +321,7 @@ const PARSED = [
original: 'a:: a',
returned: [],
userQuery: 'a:: a',
error: 'Paths cannot end with `::`',
error: 'Unexpected `:: `',
},
{
query: "a ::a",
@ -285,7 +330,7 @@ const PARSED = [
original: 'a ::a',
returned: [],
userQuery: 'a ::a',
error: 'Paths cannot start with `::`',
error: 'Unexpected ` ::`',
},
{
query: "a<a>:",
@ -294,7 +339,7 @@ const PARSED = [
original: "a<a>:",
returned: [],
userQuery: "a<a>:",
error: 'Unexpected `<` in type filter',
error: 'Unexpected `<` in type filter (before `:`)',
},
{
query: "a<>:",
@ -303,7 +348,7 @@ const PARSED = [
original: "a<>:",
returned: [],
userQuery: "a<>:",
error: 'Unexpected `<` in type filter',
error: 'Unexpected `<` in type filter (before `:`)',
},
{
query: "a,:",
@ -312,7 +357,7 @@ const PARSED = [
original: "a,:",
returned: [],
userQuery: "a,:",
error: 'Unexpected `,` in type filter',
error: 'Unexpected `,` in type filter (before `:`)',
},
{
query: " a<> :",
@ -321,7 +366,7 @@ const PARSED = [
original: "a<> :",
returned: [],
userQuery: "a<> :",
error: 'Unexpected `<` in type filter',
error: 'Unexpected `<` in type filter (before `:`)',
},
{
query: "mod : :",
@ -330,7 +375,16 @@ const PARSED = [
original: "mod : :",
returned: [],
userQuery: "mod : :",
error: 'Unexpected `:`',
error: 'Unexpected `:` (expected path after type filter `mod:`)',
},
{
query: "mod: :",
elems: [],
foundElems: 0,
original: "mod: :",
returned: [],
userQuery: "mod: :",
error: 'Unexpected `:` (expected path after type filter `mod:`)',
},
{
query: "a!a",
@ -386,4 +440,108 @@ const PARSED = [
userQuery: "a<",
error: "Unclosed `<`",
},
{
query: "p<x> , y",
elems: [
{
name: "p",
fullPath: ["p"],
pathWithoutLast: [],
pathLast: "p",
generics: [
{
name: "x",
fullPath: ["x"],
pathWithoutLast: [],
pathLast: "x",
generics: [],
typeFilter: -1,
},
],
typeFilter: -1,
},
{
name: "y",
fullPath: ["y"],
pathWithoutLast: [],
pathLast: "y",
generics: [],
typeFilter: -1,
},
],
foundElems: 2,
original: "p<x> , y",
returned: [],
userQuery: "p<x> , y",
error: null,
},
{
query: "p<x , y>",
elems: [
{
name: "p",
fullPath: ["p"],
pathWithoutLast: [],
pathLast: "p",
generics: [
{
name: "x",
fullPath: ["x"],
pathWithoutLast: [],
pathLast: "x",
generics: [],
typeFilter: -1,
},
{
name: "y",
fullPath: ["y"],
pathWithoutLast: [],
pathLast: "y",
generics: [],
typeFilter: -1,
},
],
typeFilter: -1,
},
],
foundElems: 1,
original: "p<x , y>",
returned: [],
userQuery: "p<x , y>",
error: null,
},
{
query: "p ,x , y",
elems: [
{
name: "p",
fullPath: ["p"],
pathWithoutLast: [],
pathLast: "p",
generics: [],
typeFilter: -1,
},
{
name: "x",
fullPath: ["x"],
pathWithoutLast: [],
pathLast: "x",
generics: [],
typeFilter: -1,
},
{
name: "y",
fullPath: ["y"],
pathWithoutLast: [],
pathLast: "y",
generics: [],
typeFilter: -1,
},
],
foundElems: 3,
original: "p ,x , y",
returned: [],
userQuery: "p ,x , y",
error: null,
},
];

View file

@ -38,7 +38,7 @@ const PARSED = [
original: "macro<f>:foo",
returned: [],
userQuery: "macro<f>:foo",
error: "Unexpected `<` in type filter",
error: "Unexpected `<` in type filter (before `:`)",
},
{
query: 'macro!',

View file

@ -9,7 +9,7 @@ const PARSED = [
error: 'Unclosed `<`',
},
{
query: 'p<> u8',
query: 'p<>,u8',
elems: [
{
name: "p",
@ -29,9 +29,9 @@ const PARSED = [
},
],
foundElems: 2,
original: "p<> u8",
original: "p<>,u8",
returned: [],
userQuery: "p<> u8",
userQuery: "p<>,u8",
error: null,
},
{

View file

@ -38,7 +38,7 @@ const PARSED = [
original: '"p" -> a',
returned: [],
userQuery: '"p" -> a',
error: "You cannot have more than one element if you use quotes",
error: "Cannot have more than one element if you use quotes",
},
{
query: '"a" -> "p"',

View file

@ -3,6 +3,24 @@
const PARSED = [
{
query: 'aaaaaa b',
elems: [
{
name: 'aaaaaa\tb',
fullPath: ['aaaaaa', 'b'],
pathWithoutLast: ['aaaaaa'],
pathLast: 'b',
generics: [],
typeFilter: -1,
},
],
foundElems: 1,
original: "aaaaaa b",
returned: [],
userQuery: "aaaaaa b",
error: null,
},
{
query: "aaaaaa, b",
elems: [
{
name: 'aaaaaa',
@ -22,32 +40,24 @@ const PARSED = [
},
],
foundElems: 2,
original: "aaaaaa b",
original: "aaaaaa, b",
returned: [],
userQuery: "aaaaaa b",
userQuery: "aaaaaa, b",
error: null,
},
{
query: 'a b',
elems: [
{
name: 'a',
fullPath: ['a'],
pathWithoutLast: [],
pathLast: 'a',
generics: [],
typeFilter: -1,
},
{
name: 'b',
fullPath: ['b'],
pathWithoutLast: [],
name: 'a b',
fullPath: ['a', 'b'],
pathWithoutLast: ['a'],
pathLast: 'b',
generics: [],
typeFilter: -1,
},
],
foundElems: 2,
foundElems: 1,
original: "a b",
returned: [],
userQuery: "a b",
@ -83,23 +93,15 @@ const PARSED = [
query: 'a\tb',
elems: [
{
name: 'a',
fullPath: ['a'],
pathWithoutLast: [],
pathLast: 'a',
generics: [],
typeFilter: -1,
},
{
name: 'b',
fullPath: ['b'],
pathWithoutLast: [],
name: 'a\tb',
fullPath: ['a', 'b'],
pathWithoutLast: ['a'],
pathLast: 'b',
generics: [],
typeFilter: -1,
},
],
foundElems: 2,
foundElems: 1,
original: "a\tb",
returned: [],
userQuery: "a\tb",
@ -115,16 +117,9 @@ const PARSED = [
pathLast: 'a',
generics: [
{
name: 'b',
fullPath: ['b'],
pathWithoutLast: [],
pathLast: 'b',
generics: [],
},
{
name: 'c',
fullPath: ['c'],
pathWithoutLast: [],
name: 'b c',
fullPath: ['b', 'c'],
pathWithoutLast: ['b'],
pathLast: 'c',
generics: [],
},
@ -181,16 +176,9 @@ const PARSED = [
pathLast: 'a',
generics: [
{
name: 'b',
fullPath: ['b'],
pathWithoutLast: [],
pathLast: 'b',
generics: [],
},
{
name: 'c',
fullPath: ['c'],
pathWithoutLast: [],
name: 'b\tc',
fullPath: ['b', 'c'],
pathWithoutLast: ['b'],
pathLast: 'c',
generics: [],
},

View file

@ -62,7 +62,7 @@ const PARSED = [
error: null,
},
{
query: '[] u8',
query: '[],u8',
elems: [
{
name: "[]",
@ -82,9 +82,9 @@ const PARSED = [
},
],
foundElems: 2,
original: "[] u8",
original: "[],u8",
returned: [],
userQuery: "[] u8",
userQuery: "[],u8",
error: null,
},
{

View file

@ -7,23 +7,14 @@ const PARSED = [
query: 'a b',
elems: [
{
name: "a",
fullPath: ["a"],
pathWithoutLast: [],
pathLast: "a",
generics: [],
typeFilter: -1,
},
{
name: "b",
fullPath: ["b"],
pathWithoutLast: [],
name: "a b",
fullPath: ["a", "b"],
pathWithoutLast: ["a"],
pathLast: "b",
generics: [],
typeFilter: -1,
},
],
foundElems: 2,
foundElems: 1,
original: "a b",
returned: [],
userQuery: "a b",
@ -33,23 +24,14 @@ const PARSED = [
query: 'a b',
elems: [
{
name: "a",
fullPath: ["a"],
pathWithoutLast: [],
pathLast: "a",
generics: [],
typeFilter: -1,
},
{
name: "b",
fullPath: ["b"],
pathWithoutLast: [],
name: "a b",
fullPath: ["a", "b"],
pathWithoutLast: ["a"],
pathLast: "b",
generics: [],
typeFilter: -1,
},
],
foundElems: 2,
foundElems: 1,
original: "a b",
returned: [],
userQuery: "a b",
@ -73,7 +55,6 @@ const PARSED = [
pathWithoutLast: [],
pathLast: "aaa",
generics: [],
typeFilter: -1,
},
{
name: "a",
@ -81,7 +62,6 @@ const PARSED = [
pathWithoutLast: [],
pathLast: "a",
generics: [],
typeFilter: -1,
},
],
foundElems: 2,
@ -106,7 +86,7 @@ const PARSED = [
original: 'mod :',
returned: [],
userQuery: 'mod :',
error: "Unexpected `:` (expected path after type filter)",
error: "Unexpected `:` (expected path after type filter `mod:`)",
},
{
query: 'mod\t:',
@ -115,6 +95,6 @@ const PARSED = [
original: 'mod\t:',
returned: [],
userQuery: 'mod\t:',
error: "Unexpected `:` (expected path after type filter)",
error: "Unexpected `:` (expected path after type filter `mod:`)",
},
];

View file

@ -1,9 +1,20 @@
const EXPECTED = {
'query': 'Vec::new',
'others': [
{ 'path': 'std::vec::Vec', 'name': 'new' },
{ 'path': 'alloc::vec::Vec', 'name': 'new' },
{ 'path': 'std::vec::Vec', 'name': 'new_in' },
{ 'path': 'alloc::vec::Vec', 'name': 'new_in' },
],
};
const EXPECTED = [
{
'query': 'Vec::new',
'others': [
{ 'path': 'std::vec::Vec', 'name': 'new' },
{ 'path': 'alloc::vec::Vec', 'name': 'new' },
{ 'path': 'std::vec::Vec', 'name': 'new_in' },
{ 'path': 'alloc::vec::Vec', 'name': 'new_in' },
],
},
{
'query': 'Vec new',
'others': [
{ 'path': 'std::vec::Vec', 'name': 'new' },
{ 'path': 'alloc::vec::Vec', 'name': 'new' },
{ 'path': 'std::vec::Vec', 'name': 'new_in' },
{ 'path': 'alloc::vec::Vec', 'name': 'new_in' },
],
},
];