diff options
| author | Michael Goulet <michael@errs.io> | 2025-04-04 02:16:12 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2025-04-04 21:09:32 +0000 |
| commit | f343b9d1fded2e9c33a1202b3c767bb2deb7eb4d (patch) | |
| tree | db79213fadb0aa1c6176473f1ebb4a8accd1a34c /compiler/rustc_hir_analysis/src | |
| parent | 82eb03ec6220ee435e0e07fdaf3f0a68a79aab17 (diff) | |
| download | rust-f343b9d1fded2e9c33a1202b3c767bb2deb7eb4d.tar.gz rust-f343b9d1fded2e9c33a1202b3c767bb2deb7eb4d.zip | |
Don't construct preds w escaping bound vars in diagnostic_hir_wf_check
Diffstat (limited to 'compiler/rustc_hir_analysis/src')
| -rw-r--r-- | compiler/rustc_hir_analysis/src/hir_wf_check.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/compiler/rustc_hir_analysis/src/hir_wf_check.rs b/compiler/rustc_hir_analysis/src/hir_wf_check.rs index c01b81563dc..64c1a78bd1c 100644 --- a/compiler/rustc_hir_analysis/src/hir_wf_check.rs +++ b/compiler/rustc_hir_analysis/src/hir_wf_check.rs @@ -4,7 +4,7 @@ use rustc_infer::infer::TyCtxtInferExt; use rustc_infer::traits::{ObligationCause, WellFormedLoc}; use rustc_middle::bug; use rustc_middle::query::Providers; -use rustc_middle::ty::{self, TyCtxt, TypingMode, fold_regions}; +use rustc_middle::ty::{self, TyCtxt, TypeVisitableExt, TypingMode, fold_regions}; use rustc_span::def_id::LocalDefId; use rustc_trait_selection::traits::{self, ObligationCtxt}; use tracing::debug; @@ -77,6 +77,15 @@ fn diagnostic_hir_wf_check<'tcx>( let tcx_ty = fold_regions(self.tcx, tcx_ty, |r, _| { if r.is_bound() { self.tcx.lifetimes.re_erased } else { r } }); + + // We may be checking the WFness of a type in an opaque with a non-lifetime bound. + // Perhaps we could rebind all the escaping bound vars, but they're coming from + // arbitrary debruijn indices and aren't particularly important anyways, since they + // are only coming from `feature(non_lifetime_binders)` anyways. + if tcx_ty.has_escaping_bound_vars() { + return; + } + let cause = traits::ObligationCause::new( ty.span, self.def_id, |
