@@ -166,7 +166,7 @@ impl<'a, 'tcx> TranslationContext<'a, 'tcx> {
166166 use rustc_middle:: ty:: TypeAndMut ;
167167 use rustc_middle:: ty:: { AdtDef , Binder , ExistentialProjection , ExistentialTraitRef } ;
168168
169- orig. fold_with ( & mut BottomUpFolder {
169+ let Ok ( result ) = orig. fold_with ( & mut BottomUpFolder {
170170 tcx : self . tcx ,
171171 ty_op : |ty| {
172172 match * ty. kind ( ) {
@@ -327,7 +327,8 @@ impl<'a, 'tcx> TranslationContext<'a, 'tcx> {
327327 } ,
328328 lt_op : |region| self . translate_region ( region) ,
329329 ct_op : |konst| konst, // TODO: translate consts
330- } )
330+ } ) ;
331+ result
331332 }
332333
333334 /// Translate a region.
@@ -558,12 +559,12 @@ impl<'a, 'tcx> TypeFolder<'tcx> for InferenceCleanupFolder<'a, 'tcx> {
558559 self . infcx . tcx
559560 }
560561
561- fn fold_ty ( & mut self , ty : Ty < ' tcx > ) -> Ty < ' tcx > {
562+ fn fold_ty ( & mut self , ty : Ty < ' tcx > ) -> Result < Ty < ' tcx > , Self :: Error > {
562563 use rustc_middle:: ty:: TyKind ;
563564 use rustc_middle:: ty:: TypeAndMut ;
564565
565- let t1 = ty. super_fold_with ( self ) ;
566- match * t1. kind ( ) {
566+ let t1 = ty. super_fold_with ( self ) ? ;
567+ Ok ( match * t1. kind ( ) {
567568 TyKind :: Ref ( region, ty, mutbl) if region. needs_infer ( ) => {
568569 let ty_and_mut = TypeAndMut { ty, mutbl } ;
569570 self . infcx
@@ -572,15 +573,15 @@ impl<'a, 'tcx> TypeFolder<'tcx> for InferenceCleanupFolder<'a, 'tcx> {
572573 }
573574 TyKind :: Infer ( _) => self . infcx . tcx . ty_error ( ) ,
574575 _ => t1,
575- }
576+ } )
576577 }
577578
578- fn fold_region ( & mut self , r : Region < ' tcx > ) -> Region < ' tcx > {
579- let r1 = r. super_fold_with ( self ) ;
580- if r1. needs_infer ( ) {
579+ fn fold_region ( & mut self , r : Region < ' tcx > ) -> Result < Region < ' tcx > , Self :: Error > {
580+ let r1 = r. super_fold_with ( self ) ? ;
581+ Ok ( if r1. needs_infer ( ) {
581582 self . infcx . tcx . lifetimes . re_erased
582583 } else {
583584 r1
584- }
585+ } )
585586 }
586587}
0 commit comments