rust/tests/rustdoc-js
Matthias Krüger a95e2f999a
Rollup merge of #122247 - notriddle:notriddle/search-unbox-limit, r=GuillaumeGomez
rustdoc-search: depth limit `T<U>` -> `U` unboxing

Profiler output:
https://notriddle.com/rustdoc-html-demo-9/search-unbox-limit/ (the only significant change is that one of the `rust` tests went from 378416ms to 16ms).

This is a performance enhancement aimed at a problem I found while using type-driven search on the Rust compiler. It is caused by [`Interner`], a trait with 41 associated types, many of which recurse back to `Self` again.

This caused search.js to struggle. It eventually terminates, after about 10 minutes of turning my PC into a space header, but it's doing `41!` unifications and that's too slow.

[`Interner`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/trait.Interner.html
2024-03-14 15:44:32 +01:00
..
auxiliary
assoc-type-backtrack.js
assoc-type-backtrack.rs
assoc-type-loop.js
assoc-type-loop.rs
assoc-type.js
assoc-type.rs
basic.js
basic.rs
big-result.js
big-result.rs
doc-alias-filter-out.js
doc-alias-filter-out.rs
doc-alias-filter.js
doc-alias-filter.rs
doc-alias-whitespace.js
doc-alias-whitespace.rs
doc-alias.js
doc-alias.rs
enum-variant-not-type.js
enum-variant-not-type.rs
exact-match.js
exact-match.rs
foreign-type-path.js
foreign-type-path.rs
full-path-function.js
full-path-function.rs
gat.js
gat.rs
generics2.js
generics2.rs
generics-impl.js
generics-impl.rs
generics-match-ambiguity.js
generics-match-ambiguity.rs
generics-multi-trait.js
generics-multi-trait.rs
generics-nested.js
generics-nested.rs
generics-trait.js
generics-trait.rs
generics-unbox.js
generics-unbox.rs
generics.js
generics.rs
hof.js
hof.rs
impl-trait.js
impl-trait.rs
looks-like-rustc-interner.js
looks-like-rustc-interner.rs
macro-search.js
macro-search.rs
module-substring.js
module-substring.rs
nested-unboxed.js
nested-unboxed.rs
never-search.js
never-search.rs
path-maxeditdistance.js
path-maxeditdistance.rs
path-ordering.js
path-ordering.rs
primitive.js
primitive.rs
prototype.js
prototype.rs
raw-pointer.js
raw-pointer.rs
reexport.js
reexport.rs
search-bag-semantics.js
search-bag-semantics.rs
search-method-disambiguate.js
search-method-disambiguate.rs
search-non-local-trait-impl.js
search-non-local-trait-impl.rs
search-short-types.js
search-short-types.rs
slice-array.js
slice-array.rs
struct-like-variant.js
struct-like-variant.rs
substring.js
substring.rs
summaries.js
summaries.rs
trait-methods.js
trait-methods.rs
tuple-unit.js
tuple-unit.rs
type-parameters.js
type-parameters.rs
where-clause.js
where-clause.rs