9
9
use chalk_engine:: fallible:: Fallible ;
10
10
use chalk_ir:: {
11
11
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 ,
14
15
} ;
15
16
use std:: collections:: HashMap ;
16
17
@@ -21,7 +22,11 @@ pub struct Generalize<'i, I: Interner> {
21
22
}
22
23
23
24
impl < 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
+ {
25
30
let mut generalize = Generalize {
26
31
binders : Vec :: new ( ) ,
27
32
mapping : HashMap :: new ( ) ,
@@ -30,7 +35,7 @@ impl<I: Interner> Generalize<'_, I> {
30
35
let value = value
31
36
. fold_with ( & mut generalize, DebruijnIndex :: INNERMOST )
32
37
. unwrap ( ) ;
33
- Binders :: new ( generalize. binders , value)
38
+ Binders :: new ( ParameterKinds :: from ( interner , generalize. binders ) , value)
34
39
}
35
40
}
36
41
0 commit comments