@@ -81,8 +81,11 @@ impl<'tcx> LowerInto<'tcx, chalk_ir::InEnvironment<chalk_ir::Goal<RustInterner<'
81
81
interner : & RustInterner < ' tcx > ,
82
82
) -> chalk_ir:: InEnvironment < chalk_ir:: Goal < RustInterner < ' tcx > > > {
83
83
let clauses = self . environment . into_iter ( ) . map ( |predicate| {
84
- let ( predicate, binders, _named_regions) =
85
- collect_bound_vars ( interner, interner. tcx , & predicate. bound_atom ( interner. tcx ) ) ;
84
+ let ( predicate, binders, _named_regions) = collect_bound_vars (
85
+ interner,
86
+ interner. tcx ,
87
+ & predicate. bound_atom_with_opt_escaping ( interner. tcx ) ,
88
+ ) ;
86
89
let consequence = match predicate {
87
90
ty:: PredicateAtom :: TypeWellFormedFromEnv ( ty) => {
88
91
chalk_ir:: DomainGoal :: FromEnv ( chalk_ir:: FromEnv :: Ty ( ty. lower_into ( interner) ) )
@@ -133,8 +136,11 @@ impl<'tcx> LowerInto<'tcx, chalk_ir::InEnvironment<chalk_ir::Goal<RustInterner<'
133
136
134
137
impl < ' tcx > LowerInto < ' tcx , chalk_ir:: GoalData < RustInterner < ' tcx > > > for ty:: Predicate < ' tcx > {
135
138
fn lower_into ( self , interner : & RustInterner < ' tcx > ) -> chalk_ir:: GoalData < RustInterner < ' tcx > > {
136
- let ( predicate, binders, _named_regions) =
137
- collect_bound_vars ( interner, interner. tcx , & self . bound_atom ( interner. tcx ) ) ;
139
+ let ( predicate, binders, _named_regions) = collect_bound_vars (
140
+ interner,
141
+ interner. tcx ,
142
+ & self . bound_atom_with_opt_escaping ( interner. tcx ) ,
143
+ ) ;
138
144
139
145
let value = match predicate {
140
146
ty:: PredicateAtom :: Trait ( predicate, _) => {
@@ -653,8 +659,11 @@ impl<'tcx> LowerInto<'tcx, Option<chalk_ir::QuantifiedWhereClause<RustInterner<'
653
659
self ,
654
660
interner : & RustInterner < ' tcx > ,
655
661
) -> Option < chalk_ir:: QuantifiedWhereClause < RustInterner < ' tcx > > > {
656
- let ( predicate, binders, _named_regions) =
657
- collect_bound_vars ( interner, interner. tcx , & self . bound_atom ( interner. tcx ) ) ;
662
+ let ( predicate, binders, _named_regions) = collect_bound_vars (
663
+ interner,
664
+ interner. tcx ,
665
+ & self . bound_atom_with_opt_escaping ( interner. tcx ) ,
666
+ ) ;
658
667
let value = match predicate {
659
668
ty:: PredicateAtom :: Trait ( predicate, _) => {
660
669
Some ( chalk_ir:: WhereClause :: Implemented ( predicate. trait_ref . lower_into ( interner) ) )
@@ -762,8 +771,11 @@ impl<'tcx> LowerInto<'tcx, Option<chalk_solve::rust_ir::QuantifiedInlineBound<Ru
762
771
self ,
763
772
interner : & RustInterner < ' tcx > ,
764
773
) -> Option < chalk_solve:: rust_ir:: QuantifiedInlineBound < RustInterner < ' tcx > > > {
765
- let ( predicate, binders, _named_regions) =
766
- collect_bound_vars ( interner, interner. tcx , & self . bound_atom ( interner. tcx ) ) ;
774
+ let ( predicate, binders, _named_regions) = collect_bound_vars (
775
+ interner,
776
+ interner. tcx ,
777
+ & self . bound_atom_with_opt_escaping ( interner. tcx ) ,
778
+ ) ;
767
779
match predicate {
768
780
ty:: PredicateAtom :: Trait ( predicate, _) => Some ( chalk_ir:: Binders :: new (
769
781
binders,
0 commit comments