99use chalk_engine:: fallible:: Fallible ;
1010use chalk_ir:: {
1111 fold:: { Fold , Folder } ,
12- interner:: Interner ,
13- Binders , BoundVar , DebruijnIndex , Lifetime , LifetimeData , ParameterKind , Ty , TyData ,
12+ interner:: { HasInterner , Interner } ,
13+ Binders , BoundVar , DebruijnIndex , Lifetime , LifetimeData , ParameterKind , ParameterKinds , Ty ,
14+ TyData ,
1415} ;
1516use std:: collections:: HashMap ;
1617
@@ -21,7 +22,11 @@ pub struct Generalize<'i, I: Interner> {
2122}
2223
2324impl < I : Interner > Generalize < ' _ , I > {
24- pub fn apply < T : Fold < I , I > > ( interner : & I , value : & T ) -> Binders < T :: Result > {
25+ pub fn apply < T > ( interner : & I , value : & T ) -> Binders < T :: Result >
26+ where
27+ T : HasInterner < Interner = I > + Fold < I , I > ,
28+ T :: Result : HasInterner < Interner = I > ,
29+ {
2530 let mut generalize = Generalize {
2631 binders : Vec :: new ( ) ,
2732 mapping : HashMap :: new ( ) ,
@@ -30,7 +35,7 @@ impl<I: Interner> Generalize<'_, I> {
3035 let value = value
3136 . fold_with ( & mut generalize, DebruijnIndex :: INNERMOST )
3237 . unwrap ( ) ;
33- Binders :: new ( generalize. binders , value)
38+ Binders :: new ( ParameterKinds :: from ( interner , generalize. binders ) , value)
3439 }
3540}
3641
0 commit comments