diff options
author | bors <bors@rust-lang.org> | 2023-04-12 08:39:19 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2023-04-12 08:39:19 +0000 |
commit | 9be9b5e09ad834e2ba9f2571ca17059e18f89b71 (patch) | |
tree | 8c56a32b9bdc1026a4d12a0ea5810252ae6fcdd7 /tests/rustdoc-js-std/parser-errors.js | |
parent | 0d7ed3ba8445452013dd873dc9abcad41a3d82b2 (diff) | |
parent | 7ec72efe10df28fcf5c6ec13c2a487572041be59 (diff) | |
download | rust-9be9b5e09ad834e2ba9f2571ca17059e18f89b71.tar.gz |
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
Diffstat (limited to 'tests/rustdoc-js-std/parser-errors.js')
0 files changed, 0 insertions, 0 deletions