@@ -18,17 +18,14 @@ use rustc_hir::pat_util::EnumerateAndAdjustIterator;
1818use  rustc_hir:: RangeEnd ; 
1919use  rustc_index:: Idx ; 
2020use  rustc_middle:: mir:: interpret:: { ErrorHandled ,  GlobalId ,  LitToConstError ,  LitToConstInput } ; 
21- use  rustc_middle:: mir:: { self ,  BorrowKind ,  Const ,  Mutability ,   UserTypeProjection } ; 
21+ use  rustc_middle:: mir:: { self ,  BorrowKind ,  Const ,  Mutability } ; 
2222use  rustc_middle:: thir:: { 
2323    Ascription ,  BindingMode ,  FieldPat ,  LocalVarId ,  Pat ,  PatKind ,  PatRange ,  PatRangeBoundary , 
2424} ; 
2525use  rustc_middle:: ty:: layout:: IntegerExt ; 
26- use  rustc_middle:: ty:: { 
27-     self ,  AdtDef ,  CanonicalUserTypeAnnotation ,  GenericArg ,  GenericArgsRef ,  Region ,  Ty ,  TyCtxt , 
28-     TypeVisitableExt ,  UserType , 
29- } ; 
26+ use  rustc_middle:: ty:: { self ,  CanonicalUserTypeAnnotation ,  Ty ,  TyCtxt ,  TypeVisitableExt } ; 
3027use  rustc_span:: def_id:: LocalDefId ; 
31- use  rustc_span:: { ErrorGuaranteed ,  Span ,   Symbol } ; 
28+ use  rustc_span:: { ErrorGuaranteed ,  Span } ; 
3229use  rustc_target:: abi:: { FieldIdx ,  Integer } ; 
3330
3431use  std:: cmp:: Ordering ; 
@@ -701,146 +698,3 @@ impl<'tcx> UserAnnotatedTyHelpers<'tcx> for PatCtxt<'_, 'tcx> {
701698        self . typeck_results 
702699    } 
703700} 
704- 
705- trait  PatternFoldable < ' tcx > :  Sized  { 
706-     fn  fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self  { 
707-         self . super_fold_with ( folder) 
708-     } 
709- 
710-     fn  super_fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self ; 
711- } 
712- 
713- trait  PatternFolder < ' tcx > :  Sized  { 
714-     fn  fold_pattern ( & mut  self ,  pattern :  & Pat < ' tcx > )  -> Pat < ' tcx >  { 
715-         pattern. super_fold_with ( self ) 
716-     } 
717- 
718-     fn  fold_pattern_kind ( & mut  self ,  kind :  & PatKind < ' tcx > )  -> PatKind < ' tcx >  { 
719-         kind. super_fold_with ( self ) 
720-     } 
721- } 
722- 
723- impl < ' tcx ,  T :  PatternFoldable < ' tcx > >  PatternFoldable < ' tcx >  for  Box < T >  { 
724-     fn  super_fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self  { 
725-         let  content:  T  = ( * * self ) . fold_with ( folder) ; 
726-         Box :: new ( content) 
727-     } 
728- } 
729- 
730- impl < ' tcx ,  T :  PatternFoldable < ' tcx > >  PatternFoldable < ' tcx >  for  Vec < T >  { 
731-     fn  super_fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self  { 
732-         self . iter ( ) . map ( |t| t. fold_with ( folder) ) . collect ( ) 
733-     } 
734- } 
735- 
736- impl < ' tcx ,  T :  PatternFoldable < ' tcx > >  PatternFoldable < ' tcx >  for  Box < [ T ] >  { 
737-     fn  super_fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self  { 
738-         self . iter ( ) . map ( |t| t. fold_with ( folder) ) . collect ( ) 
739-     } 
740- } 
741- 
742- impl < ' tcx ,  T :  PatternFoldable < ' tcx > >  PatternFoldable < ' tcx >  for  Option < T >  { 
743-     fn  super_fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self  { 
744-         self . as_ref ( ) . map ( |t| t. fold_with ( folder) ) 
745-     } 
746- } 
747- 
748- macro_rules!  ClonePatternFoldableImpls  { 
749-     ( <$lt_tcx: tt> $( $ty: ty) ,+)  => { 
750-         $( 
751-             impl <$lt_tcx> PatternFoldable <$lt_tcx> for  $ty { 
752-                 fn  super_fold_with<F :  PatternFolder <$lt_tcx>>( & self ,  _:  & mut  F )  -> Self  { 
753-                     Clone :: clone( self ) 
754-                 } 
755-             } 
756-         ) +
757-     } 
758- } 
759- 
760- ClonePatternFoldableImpls !  {  <' tcx>
761-     Span ,  FieldIdx ,  Mutability ,  Symbol ,  LocalVarId ,  usize , 
762-     Region <' tcx>,  Ty <' tcx>,  BindingMode ,  AdtDef <' tcx>, 
763-     GenericArgsRef <' tcx>,  & ' tcx GenericArg <' tcx>,  UserType <' tcx>, 
764-     UserTypeProjection ,  CanonicalUserTypeAnnotation <' tcx>
765- } 
766- 
767- impl < ' tcx >  PatternFoldable < ' tcx >  for  FieldPat < ' tcx >  { 
768-     fn  super_fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self  { 
769-         FieldPat  {  field :  self . field . fold_with ( folder) ,  pattern :  self . pattern . fold_with ( folder)  } 
770-     } 
771- } 
772- 
773- impl < ' tcx >  PatternFoldable < ' tcx >  for  Pat < ' tcx >  { 
774-     fn  fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self  { 
775-         folder. fold_pattern ( self ) 
776-     } 
777- 
778-     fn  super_fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self  { 
779-         Pat  { 
780-             ty :  self . ty . fold_with ( folder) , 
781-             span :  self . span . fold_with ( folder) , 
782-             kind :  self . kind . fold_with ( folder) , 
783-         } 
784-     } 
785- } 
786- 
787- impl < ' tcx >  PatternFoldable < ' tcx >  for  PatKind < ' tcx >  { 
788-     fn  fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self  { 
789-         folder. fold_pattern_kind ( self ) 
790-     } 
791- 
792-     fn  super_fold_with < F :  PatternFolder < ' tcx > > ( & self ,  folder :  & mut  F )  -> Self  { 
793-         match  * self  { 
794-             PatKind :: Wild  => PatKind :: Wild , 
795-             PatKind :: Error ( e)  => PatKind :: Error ( e) , 
796-             PatKind :: AscribeUserType  { 
797-                 ref  subpattern, 
798-                 ascription :  Ascription  {  ref  annotation,  variance } , 
799-             }  => PatKind :: AscribeUserType  { 
800-                 subpattern :  subpattern. fold_with ( folder) , 
801-                 ascription :  Ascription  {  annotation :  annotation. fold_with ( folder) ,  variance } , 
802-             } , 
803-             PatKind :: Binding  {  mutability,  name,  mode,  var,  ty,  ref  subpattern,  is_primary }  => { 
804-                 PatKind :: Binding  { 
805-                     mutability :  mutability. fold_with ( folder) , 
806-                     name :  name. fold_with ( folder) , 
807-                     mode :  mode. fold_with ( folder) , 
808-                     var :  var. fold_with ( folder) , 
809-                     ty :  ty. fold_with ( folder) , 
810-                     subpattern :  subpattern. fold_with ( folder) , 
811-                     is_primary, 
812-                 } 
813-             } 
814-             PatKind :: Variant  {  adt_def,  args,  variant_index,  ref  subpatterns }  => { 
815-                 PatKind :: Variant  { 
816-                     adt_def :  adt_def. fold_with ( folder) , 
817-                     args :  args. fold_with ( folder) , 
818-                     variant_index, 
819-                     subpatterns :  subpatterns. fold_with ( folder) , 
820-                 } 
821-             } 
822-             PatKind :: Leaf  {  ref  subpatterns }  => { 
823-                 PatKind :: Leaf  {  subpatterns :  subpatterns. fold_with ( folder)  } 
824-             } 
825-             PatKind :: Deref  {  ref  subpattern }  => { 
826-                 PatKind :: Deref  {  subpattern :  subpattern. fold_with ( folder)  } 
827-             } 
828-             PatKind :: Constant  {  value }  => PatKind :: Constant  {  value } , 
829-             PatKind :: InlineConstant  {  def,  subpattern :  ref  pattern }  => { 
830-                 PatKind :: InlineConstant  {  def,  subpattern :  pattern. fold_with ( folder)  } 
831-             } 
832-             PatKind :: Range ( ref  range)  => PatKind :: Range ( range. clone ( ) ) , 
833-             PatKind :: Slice  {  ref  prefix,  ref  slice,  ref  suffix }  => PatKind :: Slice  { 
834-                 prefix :  prefix. fold_with ( folder) , 
835-                 slice :  slice. fold_with ( folder) , 
836-                 suffix :  suffix. fold_with ( folder) , 
837-             } , 
838-             PatKind :: Array  {  ref  prefix,  ref  slice,  ref  suffix }  => PatKind :: Array  { 
839-                 prefix :  prefix. fold_with ( folder) , 
840-                 slice :  slice. fold_with ( folder) , 
841-                 suffix :  suffix. fold_with ( folder) , 
842-             } , 
843-             PatKind :: Or  {  ref  pats }  => PatKind :: Or  {  pats :  pats. fold_with ( folder)  } , 
844-         } 
845-     } 
846- } 
0 commit comments