rustdoc search: relax rules for identifiers

This commit is contained in:
binarycat
2025-10-18 15:13:36 -05:00
parent e100792918
commit a35499268e
3 changed files with 24 additions and 2 deletions

View File

@@ -149,7 +149,10 @@ const ROOT_PATH = typeof window !== "undefined" ? window.rootPath : "../";
const UNBOXING_LIMIT = 5; const UNBOXING_LIMIT = 5;
// used for search query verification // used for search query verification
const REGEX_IDENT = /\p{ID_Start}\p{ID_Continue}*|_\p{ID_Continue}+/uy; // because searches are often performed using substrings of identifiers,
// and not just full identiferes, we allow them to start with chars that otherwise
// can only appear in the middle of identifiers
const REGEX_IDENT = /\p{ID_Continue}+/uy;
const REGEX_INVALID_TYPE_FILTER = /[^a-z]/ui; const REGEX_INVALID_TYPE_FILTER = /[^a-z]/ui;
const MAX_RESULTS = 200; const MAX_RESULTS = 200;

View File

@@ -165,7 +165,7 @@ const PARSED = [
foundElems: 0, foundElems: 0,
userQuery: "_:", userQuery: "_:",
returned: [], returned: [],
error: "Unexpected `_` (not a valid identifier)", error: "Unexpected `_` in type filter (before `:`)",
}, },
{ {
query: "ab:", query: "ab:",

View File

@@ -0,0 +1,19 @@
// regression test for https://github.com/rust-lang/rust/issues/147763
//
// identifiers in search queries should not be required to follow the
// same strict rules around ID_Start that identifers in rust code follow,
// as searches frequently use substrings of identifers.
//
// for example, identifiers cannot start with digits,
// but they can contain them, so we allow search idents to start with digits.
const EXPECTED = {
'query': '8',
'others': [
{
'path': 'std',
'name': 'i8',
'href': '../std/primitive.i8.html',
},
]
};