about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/builder.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2025-08-23 20:16:58 +0000
committerbors <bors@rust-lang.org>2025-08-23 20:16:58 +0000
commit69b76df90c7ea63b5350d1865f92902a0b27c9a2 (patch)
tree94d1ca31b26b42df8398c74d36bb3fa3e0c3c6ae /compiler/rustc_codegen_llvm/src/builder.rs
parentc5a6a7bdd89f099544fa0d3fad4d833d238377ad (diff)
parent17ac2fc96d7dc93b5a02b8f2fe5f03edade6f739 (diff)
downloadrust-69b76df90c7ea63b5350d1865f92902a0b27c9a2.tar.gz
rust-69b76df90c7ea63b5350d1865f92902a0b27c9a2.zip
Auto merge of #145706 - lcnr:uniquification, r=BoxyUwU
change HIR typeck region uniquification handling approach

rust-lang/rust#144405 causes structural lookup of opaque types to not work during HIR typeck, so instead avoid uniquifying goals and instead only reprove them if MIR borrowck actually encounters an error.

This doesn't perfectly maintain the property that HIR typeck succeeding implies that MIR typeck succeeds, instead weakening this check to only guarantee that HIR typeck implies that MIR typeck succeeds modulo region uniquification. This means we still get the actually desirable ICEs if we MIR building is broken or we forget to check some property in HIR typeck, without having to deal with the fallout of uniquification in HIR typeck itself.

We report errors using the original obligation sources of HIR typeck so diagnostics aren't that negatively impacted either.

Here's the history of region uniquification while working on the new trait solver:
- rust-lang/rust#107981
- rust-lang/rust#110180
- rust-lang/rust#114117
- rust-lang/rust#130821
- rust-lang/rust#144405
- rust-lang/rust#145706 <- we're here :tada:

r? `@BoxyUwU`
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/builder.rs')
0 files changed, 0 insertions, 0 deletions