33use  chalk_ir:: { 
44    AdtId ,  DebruijnIndex ,  Scalar , 
55    cast:: { Cast ,  CastTo ,  Caster } , 
6-     fold:: TypeFoldable , 
7-     interner:: HasInterner , 
86} ; 
97use  hir_def:: { GenericDefId ,  GenericParamId ,  TraitId ,  TypeAliasId ,  builtin_type:: BuiltinType } ; 
108use  smallvec:: SmallVec ; 
119
1210use  crate :: { 
13-     Binders ,  BoundVar ,  CallableSig ,  GenericArg ,  GenericArgData ,  Interner ,  ProjectionTy , 
14-     Substitution ,  TraitRef ,  Ty ,  TyDefId ,  TyExt ,  TyKind ,  consteval:: unknown_const_as_generic, 
15-     db:: HirDatabase ,  error_lifetime,  generics:: generics,  infer:: unify:: InferenceTable ,  primitive, 
16-     to_assoc_type_id,  to_chalk_trait_id, 
11+     BoundVar ,  CallableSig ,  GenericArg ,  GenericArgData ,  Interner ,  ProjectionTy ,  Substitution , 
12+     TraitRef ,  Ty ,  TyDefId ,  TyExt ,  TyKind , 
13+     consteval:: unknown_const_as_generic, 
14+     db:: HirDatabase , 
15+     error_lifetime, 
16+     generics:: generics, 
17+     infer:: unify:: InferenceTable , 
18+     next_solver:: { DbInterner ,  EarlyBinder ,  mapping:: ChalkToNextSolver } , 
19+     primitive,  to_assoc_type_id,  to_chalk_trait_id, 
1720} ; 
1821
1922#[ derive( Debug ,  Clone ,  PartialEq ,  Eq ) ]  
@@ -345,19 +348,20 @@ impl TyBuilder<TypeAliasId> {
345348    } 
346349} 
347350
348- impl < T :  HasInterner < Interner  =  Interner >  +  TypeFoldable < Interner > >  TyBuilder < Binders < T > >  { 
349-     pub  fn  build ( self )  -> T  { 
351+ impl < ' db ,   T :  rustc_type_ir :: TypeFoldable < DbInterner < ' db > > >  TyBuilder < EarlyBinder < ' db ,   T > >  { 
352+     pub  fn  build ( self ,   interner :   DbInterner < ' db > )  -> T  { 
350353        let  ( b,  subst)  = self . build_internal ( ) ; 
351-         b. substitute ( Interner ,  & subst) 
354+         let  args:  crate :: next_solver:: GenericArgs < ' db >  = subst. to_nextsolver ( interner) ; 
355+         b. instantiate ( interner,  args) 
352356    } 
353357} 
354358
355- impl  TyBuilder < Binders < Ty > >  { 
359+ impl < ' db >  TyBuilder < EarlyBinder < ' db ,   crate :: next_solver :: Ty < ' db > > >  { 
356360    pub  fn  def_ty ( 
357-         db :  & dyn  HirDatabase , 
361+         db :  & ' db   dyn  HirDatabase , 
358362        def :  TyDefId , 
359363        parent_subst :  Option < Substitution > , 
360-     )  -> TyBuilder < Binders < Ty > >  { 
364+     )  -> TyBuilder < EarlyBinder < ' db ,   crate :: next_solver :: Ty < ' db > > >  { 
361365        let  poly_ty = db. ty ( def) ; 
362366        let  id:  GenericDefId  = match  def { 
363367            TyDefId :: BuiltinType ( _)  => { 
@@ -370,7 +374,10 @@ impl TyBuilder<Binders<Ty>> {
370374        TyBuilder :: subst_for_def ( db,  id,  parent_subst) . with_data ( poly_ty) 
371375    } 
372376
373-     pub  fn  impl_self_ty ( db :  & dyn  HirDatabase ,  def :  hir_def:: ImplId )  -> TyBuilder < Binders < Ty > >  { 
377+     pub  fn  impl_self_ty ( 
378+         db :  & ' db  dyn  HirDatabase , 
379+         def :  hir_def:: ImplId , 
380+     )  -> TyBuilder < EarlyBinder < ' db ,  crate :: next_solver:: Ty < ' db > > >  { 
374381        TyBuilder :: subst_for_def ( db,  def,  None ) . with_data ( db. impl_self_ty ( def) ) 
375382    } 
376383} 
0 commit comments