diff options
| author | lcnr <rust@lcnr.de> | 2025-08-22 13:39:38 +0200 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2025-08-22 13:39:38 +0200 |
| commit | 17ac2fc96d7dc93b5a02b8f2fe5f03edade6f739 (patch) | |
| tree | 3461f816dae42360712dcd9eddec8a163b6c9df8 /compiler/rustc_middle/src/query/mod.rs | |
| parent | 831e291d3be4cacc4fe178424c4d6baa264d8b5a (diff) | |
| download | rust-17ac2fc96d7dc93b5a02b8f2fe5f03edade6f739.tar.gz rust-17ac2fc96d7dc93b5a02b8f2fe5f03edade6f739.zip | |
change HIR typeck unification handling approach
Diffstat (limited to 'compiler/rustc_middle/src/query/mod.rs')
| -rw-r--r-- | compiler/rustc_middle/src/query/mod.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/compiler/rustc_middle/src/query/mod.rs b/compiler/rustc_middle/src/query/mod.rs index 3bb8353f49e..3e66f7dcb2c 100644 --- a/compiler/rustc_middle/src/query/mod.rs +++ b/compiler/rustc_middle/src/query/mod.rs @@ -696,6 +696,22 @@ rustc_queries! { return_result_from_ensure_ok } + /// Used in case `mir_borrowck` fails to prove an obligation. We generally assume that + /// all goals we prove in MIR type check hold as we've already checked them in HIR typeck. + /// + /// However, we replace each free region in the MIR body with a unique region inference + /// variable. As we may rely on structural identity when proving goals this may cause a + /// goal to no longer hold. We store obligations for which this may happen during HIR + /// typeck in the `TypeckResults`. We then uniquify and reprove them in case MIR typeck + /// encounters an unexpected error. We expect this to result in an error when used and + /// delay a bug if it does not. + query check_potentially_region_dependent_goals(key: LocalDefId) -> Result<(), ErrorGuaranteed> { + desc { + |tcx| "reproving potentially region dependent HIR typeck goals for `{}", + tcx.def_path_str(key) + } + } + /// MIR after our optimization passes have run. This is MIR that is ready /// for codegen. This is also the only query that can fetch non-local MIR, at present. query optimized_mir(key: DefId) -> &'tcx mir::Body<'tcx> { |
