about summary refs log tree commit diff
path: root/compiler/rustc_codegen_cranelift/src/constant.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-07-07 23:03:48 +0000
committerbors <bors@rust-lang.org>2024-07-07 23:03:48 +0000
commit89aefb9c53090851be903b5a9171a2efdc3fd16f (patch)
treed8fbfbc5923f360a733e9483b858a1c6d097b230 /compiler/rustc_codegen_cranelift/src/constant.rs
parent20ae37c18df95f9246c019b04957d23b4164bf7a (diff)
parent465e7d546e0d76e3c3807154947d346cada6002a (diff)
downloadrust-89aefb9c53090851be903b5a9171a2efdc3fd16f.tar.gz
rust-89aefb9c53090851be903b5a9171a2efdc3fd16f.zip
Auto merge of #127172 - compiler-errors:full-can_eq-everywhere, r=lcnr
Make `can_eq` process obligations (almost) everywhere

Move `can_eq` to an extension trait on `InferCtxt` in `rustc_trait_selection`, and change it so that it processes obligations. This should strengthen it to be more accurate in some cases, but is most important for the new trait solver which delays relating aliases to `AliasRelate` goals. Without this, we always basically just return true when passing aliases to `can_eq`, which can lead to weird errors, for example #127149.

I'm not actually certain if we should *have* `can_eq` be called on the good path. In cases where we need `can_eq`, we probably should just be using a regular probe.

Fixes #127149

r? lcnr
Diffstat (limited to 'compiler/rustc_codegen_cranelift/src/constant.rs')
0 files changed, 0 insertions, 0 deletions