Skip to content

Commit 5a39c67

Browse files
Only consider predicate non-global if binder vars are in PREDICATE binder
1 parent be181dd commit 5a39c67

File tree

2 files changed

+3
-2
lines changed
  • compiler
    • rustc_hir_analysis/src/check
    • rustc_trait_selection/src/traits/select

2 files changed

+3
-2
lines changed

compiler/rustc_hir_analysis/src/check/wfcheck.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2291,7 +2291,7 @@ impl<'tcx> WfCheckingCtxt<'_, 'tcx> {
22912291
continue;
22922292
}
22932293
// Match the existing behavior.
2294-
if pred.is_global() && !pred.has_type_flags(TypeFlags::HAS_BINDER_VARS) {
2294+
if pred.is_global() && pred.kind().bound_vars().is_empty() {
22952295
let pred = self.normalize(span, None, pred);
22962296

22972297
// only use the span of the predicate clause (#90869)

compiler/rustc_trait_selection/src/traits/select/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1862,7 +1862,8 @@ impl<'tcx> SelectionContext<'_, 'tcx> {
18621862
//
18631863
// Our handling of where-bounds is generally fairly messy but necessary for backwards
18641864
// compatibility, see #50825 for why we need to handle global where-bounds like this.
1865-
let is_global = |c: ty::PolyTraitPredicate<'tcx>| c.is_global() && !c.has_bound_vars();
1865+
let is_global =
1866+
|c: ty::PolyTraitPredicate<'tcx>| c.is_global() && c.bound_vars().is_empty();
18661867
let param_candidates = candidates
18671868
.iter()
18681869
.filter_map(|c| if let ParamCandidate(p) = c.candidate { Some(p) } else { None });

0 commit comments

Comments
 (0)