rust/compiler/rustc_trait_selection/src
bors 60bb5192d1 Auto merge of #115843 - lcnr:bb-provisional-cache, r=compiler-errors
new solver: remove provisional cache

The provisional cache is a performance optimization if there are large, interleaving cycles. Such cycles generally do not exist. It is incredibly complex and unsound in all trait solvers which have one: the old solver, chalk, and the new solver ([link](https://github.com/rust-lang/rust/blob/master/tests/ui/traits/new-solver/cycles/inductive-not-on-stack.rs)).

Given the assumption that it is not perf-critical and also incredibly complex, remove it from the new solver, only checking whether a goal is on the stack. While writing this, I uncovered two additional soundness bugs, see the inline comments for them.

r? `@compiler-errors`
2023-09-29 02:09:40 +00:00
..
solve Auto merge of #115843 - lcnr:bb-provisional-cache, r=compiler-errors 2023-09-29 02:09:40 +00:00
traits fix clippy::{redundant_guards, useless_format} 2023-09-27 23:49:15 +02:00
errors.rs Migrate a trait selection error to use diagnostic translation 2023-08-07 05:26:38 +00:00
infer.rs Remove constness from TraitPredicate 2023-08-02 15:38:00 +00:00
lib.rs remove hash_drain_filter feature uses 2023-06-14 09:28:56 +02:00