rustdoc-search: search never type with !

This feature extends rustdoc to support the syntax that most users will
naturally attempt to use to search for diverging functions.
Part of #60485

It's already possible to do this search with `primitive:never`, but
that's not what the Rust language itself uses, so nobody will try it if
they aren't told or helped along.
This commit is contained in:
Michael Howell 2023-06-12 14:56:54 -07:00
parent df77afbcaf
commit db277f5284
7 changed files with 200 additions and 24 deletions

View file

@ -8,11 +8,12 @@ const PARSED = [
pathLast: "r",
generics: [
{
name: "!",
fullPath: ["!"],
name: "never",
fullPath: ["never"],
pathWithoutLast: [],
pathLast: "!",
pathLast: "never",
generics: [],
typeFilter: 15,
},
],
typeFilter: -1,
@ -26,12 +27,12 @@ const PARSED = [
{
query: "!",
elems: [{
name: "!",
fullPath: ["!"],
name: "never",
fullPath: ["never"],
pathWithoutLast: [],
pathLast: "!",
pathLast: "never",
generics: [],
typeFilter: -1,
typeFilter: 15,
}],
foundElems: 1,
original: "!",
@ -64,12 +65,21 @@ const PARSED = [
userQuery: "a!::b",
error: "Cannot have associated items in macros",
},
{
query: "!<T>",
elems: [],
foundElems: 0,
original: "!<T>",
returned: [],
userQuery: "!<t>",
error: "Never type `!` does not accept generic parameters",
},
{
query: "!::b",
elems: [{
name: "!::b",
fullPath: ["!", "b"],
pathWithoutLast: ["!"],
fullPath: ["never", "b"],
pathWithoutLast: ["never"],
pathLast: "b",
generics: [],
typeFilter: -1,
@ -80,6 +90,58 @@ const PARSED = [
userQuery: "!::b",
error: null,
},
{
query: "b::!",
elems: [],
foundElems: 0,
original: "b::!",
returned: [],
userQuery: "b::!",
error: "Never type `!` is not associated item",
},
{
query: "!::!",
elems: [],
foundElems: 0,
original: "!::!",
returned: [],
userQuery: "!::!",
error: "Never type `!` is not associated item",
},
{
query: "b::!::c",
elems: [],
foundElems: 0,
original: "b::!::c",
returned: [],
userQuery: "b::!::c",
error: "Never type `!` is not associated item",
},
{
query: "!::b<T>",
elems: [{
name: "!::b",
fullPath: ["never", "b"],
pathWithoutLast: ["never"],
pathLast: "b",
generics: [
{
name: "t",
fullPath: ["t"],
pathWithoutLast: [],
pathLast: "t",
generics: [],
typeFilter: -1,
}
],
typeFilter: -1,
}],
foundElems: 1,
original: "!::b<T>",
returned: [],
userQuery: "!::b<t>",
error: null,
},
{
query: "a!::b!",
elems: [],