diff options
| author | bors <bors@rust-lang.org> | 2024-04-23 14:07:05 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-04-23 14:07:05 +0000 |
| commit | cd90d5c03532da6f7ca7dcfb861ffabdc36a9d00 (patch) | |
| tree | 5df57809bb6075b7a98ed26cb2623738224d457c /compiler/rustc_codegen_cranelift/example | |
| parent | ad07aa12c99698f810d730d7b5a49704c729651d (diff) | |
| parent | 8995c2c4a20197358605c3dad609e39f90a75ce8 (diff) | |
| download | rust-cd90d5c03532da6f7ca7dcfb861ffabdc36a9d00.tar.gz rust-cd90d5c03532da6f7ca7dcfb861ffabdc36a9d00.zip | |
Auto merge of #122317 - compiler-errors:fulfill-method-probe, r=lcnr
Use fulfillment in method probe, not evaluation
This PR reworks method probing to use fulfillment instead of a `for`-loop of `evaluate_predicate` calls, and moves normalization from method candidate assembly into the `consider_probe`, where it's applied to *all* candidates. This last part coincidentally fixes https://github.com/rust-lang/rust/issues/121643#issuecomment-1975371248.
Regarding *why* this large rewrite is done: In general, it's an anti-pattern to do `for o in obligations { evaluate(o); }` because it's not compatible with the way that the new solver emits alias-relate obligations which constrain variables that may show up in other predicates.
r? lcnr
Diffstat (limited to 'compiler/rustc_codegen_cranelift/example')
0 files changed, 0 insertions, 0 deletions
