rust/compiler/rustc_trait_selection/src/solve
bors 9be9b5e09a Auto merge of #107614 - compiler-errors:allow-elaborator-to-filter-only-super-traits, r=oli-obk
Split implied and super predicate queries, then allow elaborator to filter only supertraits

Split the `super_predicates_of` query into a new `implied_predicates_of` query. The former now only returns the *real* supertraits of a trait alias, and the latter now returns the implied predicates (which include all of the `where` clauses of the trait alias). The behavior of these queries is identical for regular traits.

Now that the two queries are split, we can add a new filter method to the elaborator, `filter_only_self()`, which can be used in instances that we need only the *supertrait* predicates, such as during the elaboration used in closure signature deduction. This toggles the usage of `super_predicates_of` instead of `implied_predicates_of` during elaboration of a trait predicate.

This supersedes #104745, and fixes the four independent bugs identified in that PR.
Fixes #104719
Fixes #106238
Fixes #110023
Fixes #109514

r? types
2023-04-12 08:39:19 +00:00
..
assembly Auto merge of #107614 - compiler-errors:allow-elaborator-to-filter-only-super-traits, r=oli-obk 2023-04-12 08:39:19 +00:00
eval_ctxt review + some small stuff 2023-04-10 09:21:21 +02:00
search_graph Tweak debug outputs to make debugging new solver easier 2023-04-05 03:18:29 +00:00
canonicalize.rs Remove u32 on BoundTyKind::Anon 2023-04-06 23:08:04 -04:00
eval_ctxt.rs Support safe transmute in new solver 2023-04-10 16:08:14 +00:00
fulfill.rs Return nested obligations from canonical response var unification 2023-03-23 19:00:04 +00:00
mod.rs review + some small stuff 2023-04-10 09:21:21 +02:00
project_goals.rs Support safe transmute in new solver 2023-04-10 16:08:14 +00:00
trait_goals.rs Rollup merge of #110126 - compiler-errors:new-solver-safe-transmute, r=oli-obk 2023-04-11 20:28:48 -07:00