diff options
| author | bors <bors@rust-lang.org> | 2025-01-06 22:39:16 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-01-06 22:39:16 +0000 |
| commit | 0f1e965fec3bc2f97b932e9dd8e85fca6d7faadc (patch) | |
| tree | 03291f9057f838ec4ea344136d00431ca2a992d4 /compiler/rustc_hir_analysis/src/check/check.rs | |
| parent | 243d2ca4db6f96d2d18aaf3a2381251d38eb6b0b (diff) | |
| parent | 873ae7a5ad71afc1f7f7fcd8474d7d8d0ce6e89f (diff) | |
| download | rust-0f1e965fec3bc2f97b932e9dd8e85fca6d7faadc.tar.gz rust-0f1e965fec3bc2f97b932e9dd8e85fca6d7faadc.zip | |
Auto merge of #135172 - matthiaskrgr:rollup-8fe3fxi, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - #134742 (Use `PostBorrowckAnalysis` in `check_coroutine_obligations`) - #134771 (Report correct `SelectionError` for `ConstArgHasType` in new solver fulfill) - #134951 (Suppress host effect predicates if underlying trait doesn't hold) - #135097 (bootstrap: Consolidate coverage test suite steps into a single step) - #135146 (Don't enable anyhow's `backtrace` feature in opt-dist) - #135153 (chore: remove redundant words in comment) - #135157 (Move the has_errors check in rustdoc back to after TyCtxt is created) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_hir_analysis/src/check/check.rs')
| -rw-r--r-- | compiler/rustc_hir_analysis/src/check/check.rs | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/compiler/rustc_hir_analysis/src/check/check.rs b/compiler/rustc_hir_analysis/src/check/check.rs index 5548a6a6ef7..8c6059d49a8 100644 --- a/compiler/rustc_hir_analysis/src/check/check.rs +++ b/compiler/rustc_hir_analysis/src/check/check.rs @@ -1845,13 +1845,18 @@ pub(super) fn check_coroutine_obligations( debug!(?typeck_results.coroutine_stalled_predicates); + let mode = if tcx.next_trait_solver_globally() { + TypingMode::post_borrowck_analysis(tcx, def_id) + } else { + TypingMode::analysis_in_body(tcx, def_id) + }; + let infcx = tcx .infer_ctxt() // typeck writeback gives us predicates with their regions erased. // As borrowck already has checked lifetimes, we do not need to do it again. .ignoring_regions() - // FIXME(#132279): This should eventually use the already defined hidden types. - .build(TypingMode::analysis_in_body(tcx, def_id)); + .build(mode); let ocx = ObligationCtxt::new_with_diagnostics(&infcx); for (predicate, cause) in &typeck_results.coroutine_stalled_predicates { @@ -1864,12 +1869,14 @@ pub(super) fn check_coroutine_obligations( return Err(infcx.err_ctxt().report_fulfillment_errors(errors)); } - // Check that any hidden types found when checking these stalled coroutine obligations - // are valid. - for (key, ty) in infcx.take_opaque_types() { - let hidden_type = infcx.resolve_vars_if_possible(ty.hidden_type); - let key = infcx.resolve_vars_if_possible(key); - sanity_check_found_hidden_type(tcx, key, hidden_type)?; + if !tcx.next_trait_solver_globally() { + // Check that any hidden types found when checking these stalled coroutine obligations + // are valid. + for (key, ty) in infcx.take_opaque_types() { + let hidden_type = infcx.resolve_vars_if_possible(ty.hidden_type); + let key = infcx.resolve_vars_if_possible(key); + sanity_check_found_hidden_type(tcx, key, hidden_type)?; + } } Ok(()) |
