about summary refs log tree commit diff
path: root/compiler/rustc_codegen_cranelift/example
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-04-23 14:07:05 +0000
committerbors <bors@rust-lang.org>2024-04-23 14:07:05 +0000
commitcd90d5c03532da6f7ca7dcfb861ffabdc36a9d00 (patch)
tree5df57809bb6075b7a98ed26cb2623738224d457c /compiler/rustc_codegen_cranelift/example
parentad07aa12c99698f810d730d7b5a49704c729651d (diff)
parent8995c2c4a20197358605c3dad609e39f90a75ce8 (diff)
downloadrust-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