rust/compiler/rustc_infer/src
Matthias Krüger f0205d55ce
Rollup merge of #109166 - lcnr:define_opaque_types-explicit, r=oli-obk
make `define_opaque_types` fully explicit

based on the idea of #108389. Moved `define_opaque_types` into the actual operations, e.g. `eq`, instead of `infcx.at` because normalization doesn't use `define_opaque_types` and even creates it's own `At` with a different `define_opaque_types` internally.

Somewhat surprisingly, coherence actually relies on `DefineOpaqueTypes::Yes` for soundness which was revealed because I've incorrectly used `DefineOpaqueTypes::No` in `equate_impl_headers`. It feels concerning that even though this is the case, we still sometimes use `DefineOpaqueTypes::No` in coherence. I did not look into this as part of this PR as it is purely changing the structure of the code without changing behavior in any way.

r? ```@oli-obk```
2023-03-16 08:57:07 +01:00
..
errors Migrate diagnostic 2023-03-03 05:02:34 +00:00
infer Rollup merge of #109166 - lcnr:define_opaque_types-explicit, r=oli-obk 2023-03-16 08:57:07 +01:00
traits Move some solver stuff to middle 2023-03-10 23:46:38 +00:00
lib.rs Simplify message paths 2023-03-11 22:51:57 +01:00