rust/compiler/rustc_trait_selection/src/solve
Dylan DPC 64f6c00772
Rollup merge of #112443 - compiler-errors:next-solver-opportunistically-resolve-regions, r=lcnr
Opportunistically resolve regions in new solver

Use `opportunistic_resolve_var` during canonicalization to collapse some regions.

We have to start using `CanonicalVarValues::is_identity_modulo_regions`. We also have to modify that function to consider responses like `['static, ^0, '^1, ^2]` to be an "identity" response, since because we opportunistically resolve regions, there's no longer a 1:1 mapping between canonical var values and bound var indices in the response...

There's one nasty side-effect -- one test (`tests/ui/dyn-star/param-env-infer.rs`) starts to ICE because the certainty goes from `Yes` to `Maybe(Overflow)`... Not exactly sure why, though? Putting this up for discussion/investigation.

r? ```@lcnr```
2023-06-16 14:46:15 +05:30
..
assembly update comment 2023-06-12 12:47:09 +02:00
eval_ctxt Auto merge of #112466 - lcnr:opaque-type-cleanup, r=compiler-errors 2023-06-11 03:42:14 +00:00
search_graph Prepopulate opaques in canonical input 2023-05-25 03:21:22 +00:00
alias_relate.rs Fall back to bidirectional normalizes-to if no subst-eq in alias-eq goal 2023-06-06 18:44:22 +00:00
canonicalize.rs opportunistically resolve regions 2023-06-13 22:10:51 +00:00
eval_ctxt.rs Rollup merge of #112443 - compiler-errors:next-solver-opportunistically-resolve-regions, r=lcnr 2023-06-16 14:46:15 +05:30
fulfill.rs No const equate in new solver 2023-06-02 22:07:57 +00:00
mod.rs Move alias-relate to its own module 2023-06-06 18:44:22 +00:00
opaques.rs split opaque type handling in new solver 2023-06-09 16:41:11 +02:00
project_goals.rs Rollup merge of #112223 - compiler-errors:new-solver-auto-proj, r=BoxyUwU 2023-06-02 16:02:07 -07:00
trait_goals.rs Use Option::is_some_and and Result::is_ok_and in the compiler 2023-05-24 14:20:41 +00:00