@@ -314,8 +314,8 @@ pub trait Visitor<'v> : Sized {
314314    fn  visit_trait_ref ( & mut  self ,  t :  & ' v  TraitRef )  { 
315315        walk_trait_ref ( self ,  t) 
316316    } 
317-     fn  visit_ty_param_bound ( & mut  self ,  bounds :  & ' v  TyParamBound )  { 
318-         walk_ty_param_bound ( self ,  bounds) 
317+     fn  visit_param_bound ( & mut  self ,  bounds :  & ' v  GenericBound )  { 
318+         walk_param_bound ( self ,  bounds) 
319319    } 
320320    fn  visit_poly_trait_ref ( & mut  self ,  t :  & ' v  PolyTraitRef ,  m :  TraitBoundModifier )  { 
321321        walk_poly_trait_ref ( self ,  t,  m) 
@@ -344,6 +344,12 @@ pub trait Visitor<'v> : Sized {
344344    fn  visit_label ( & mut  self ,  label :  & ' v  Label )  { 
345345        walk_label ( self ,  label) 
346346    } 
347+     fn  visit_generic_arg ( & mut  self ,  generic_arg :  & ' v  GenericArg )  { 
348+         match  generic_arg { 
349+             GenericArg :: Lifetime ( lt)  => self . visit_lifetime ( lt) , 
350+             GenericArg :: Type ( ty)  => self . visit_ty ( ty) , 
351+         } 
352+     } 
347353    fn  visit_lifetime ( & mut  self ,  lifetime :  & ' v  Lifetime )  { 
348354        walk_lifetime ( self ,  lifetime) 
349355    } 
@@ -356,8 +362,8 @@ pub trait Visitor<'v> : Sized {
356362    fn  visit_path_segment ( & mut  self ,  path_span :  Span ,  path_segment :  & ' v  PathSegment )  { 
357363        walk_path_segment ( self ,  path_span,  path_segment) 
358364    } 
359-     fn  visit_path_parameters ( & mut  self ,  path_span :  Span ,  path_parameters :  & ' v  PathParameters )  { 
360-         walk_path_parameters ( self ,  path_span,  path_parameters ) 
365+     fn  visit_generic_args ( & mut  self ,  path_span :  Span ,  generic_args :  & ' v  GenericArgs )  { 
366+         walk_generic_args ( self ,  path_span,  generic_args ) 
361367    } 
362368    fn  visit_assoc_type_binding ( & mut  self ,  type_binding :  & ' v  TypeBinding )  { 
363369        walk_assoc_type_binding ( self ,  type_binding) 
@@ -427,10 +433,10 @@ pub fn walk_label<'v, V: Visitor<'v>>(visitor: &mut V, label: &'v Label) {
427433pub  fn  walk_lifetime < ' v ,  V :  Visitor < ' v > > ( visitor :  & mut  V ,  lifetime :  & ' v  Lifetime )  { 
428434    visitor. visit_id ( lifetime. id ) ; 
429435    match  lifetime. name  { 
430-         LifetimeName :: Name ( name)  => { 
436+         LifetimeName :: Param ( ParamName :: Plain ( name) )  => { 
431437            visitor. visit_name ( lifetime. span ,  name) ; 
432438        } 
433-         LifetimeName :: Fresh ( _)  |
439+         LifetimeName :: Param ( ParamName :: Fresh ( _) )  |
434440        LifetimeName :: Static  |
435441        LifetimeName :: Implicit  |
436442        LifetimeName :: Underscore  => { } 
@@ -505,7 +511,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) {
505511        ItemExistential ( ExistTy  { ref  generics,  ref  bounds,  impl_trait_fn} )  => { 
506512            visitor. visit_id ( item. id ) ; 
507513            walk_generics ( visitor,  generics) ; 
508-             walk_list ! ( visitor,  visit_ty_param_bound ,  bounds) ; 
514+             walk_list ! ( visitor,  visit_param_bound ,  bounds) ; 
509515            if  let  Some ( impl_trait_fn)  = impl_trait_fn { 
510516                visitor. visit_def_mention ( Def :: Fn ( impl_trait_fn) ) 
511517            } 
@@ -531,13 +537,13 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) {
531537        ItemTrait ( ..,  ref  generics,  ref  bounds,  ref  trait_item_refs)  => { 
532538            visitor. visit_id ( item. id ) ; 
533539            visitor. visit_generics ( generics) ; 
534-             walk_list ! ( visitor,  visit_ty_param_bound ,  bounds) ; 
540+             walk_list ! ( visitor,  visit_param_bound ,  bounds) ; 
535541            walk_list ! ( visitor,  visit_trait_item_ref,  trait_item_refs) ; 
536542        } 
537543        ItemTraitAlias ( ref  generics,  ref  bounds)  => { 
538544            visitor. visit_id ( item. id ) ; 
539545            visitor. visit_generics ( generics) ; 
540-             walk_list ! ( visitor,  visit_ty_param_bound ,  bounds) ; 
546+             walk_list ! ( visitor,  visit_param_bound ,  bounds) ; 
541547        } 
542548    } 
543549    walk_list ! ( visitor,  visit_attribute,  & item. attrs) ; 
@@ -642,17 +648,16 @@ pub fn walk_path_segment<'v, V: Visitor<'v>>(visitor: &mut V,
642648                                             path_span :  Span , 
643649                                             segment :  & ' v  PathSegment )  { 
644650    visitor. visit_name ( path_span,  segment. name ) ; 
645-     if  let  Some ( ref  parameters )  = segment. parameters  { 
646-         visitor. visit_path_parameters ( path_span,  parameters ) ; 
651+     if  let  Some ( ref  args )  = segment. args  { 
652+         visitor. visit_generic_args ( path_span,  args ) ; 
647653    } 
648654} 
649655
650- pub  fn  walk_path_parameters < ' v ,  V :  Visitor < ' v > > ( visitor :  & mut  V , 
651-                                                 _path_span :  Span , 
652-                                                 path_parameters :  & ' v  PathParameters )  { 
653-     walk_list ! ( visitor,  visit_lifetime,  & path_parameters. lifetimes) ; 
654-     walk_list ! ( visitor,  visit_ty,  & path_parameters. types) ; 
655-     walk_list ! ( visitor,  visit_assoc_type_binding,  & path_parameters. bindings) ; 
656+ pub  fn  walk_generic_args < ' v ,  V :  Visitor < ' v > > ( visitor :  & mut  V , 
657+                                              _path_span :  Span , 
658+                                              generic_args :  & ' v  GenericArgs )  { 
659+     walk_list ! ( visitor,  visit_generic_arg,  & generic_args. args) ; 
660+     walk_list ! ( visitor,  visit_assoc_type_binding,  & generic_args. bindings) ; 
656661} 
657662
658663pub  fn  walk_assoc_type_binding < ' v ,  V :  Visitor < ' v > > ( visitor :  & mut  V , 
@@ -726,40 +731,27 @@ pub fn walk_foreign_item<'v, V: Visitor<'v>>(visitor: &mut V, foreign_item: &'v
726731    walk_list ! ( visitor,  visit_attribute,  & foreign_item. attrs) ; 
727732} 
728733
729- pub  fn  walk_ty_param_bound < ' v ,  V :  Visitor < ' v > > ( visitor :  & mut  V ,  bound :  & ' v  TyParamBound )  { 
734+ pub  fn  walk_param_bound < ' v ,  V :  Visitor < ' v > > ( visitor :  & mut  V ,  bound :  & ' v  GenericBound )  { 
730735    match  * bound { 
731-         TraitTyParamBound ( ref  typ,  modifier)  => { 
736+         GenericBound :: Trait ( ref  typ,  modifier)  => { 
732737            visitor. visit_poly_trait_ref ( typ,  modifier) ; 
733738        } 
734-         RegionTyParamBound ( ref  lifetime)  => { 
735-             visitor. visit_lifetime ( lifetime) ; 
736-         } 
739+         GenericBound :: Outlives ( ref  lifetime)  => visitor. visit_lifetime ( lifetime) , 
737740    } 
738741} 
739742
740743pub  fn  walk_generic_param < ' v ,  V :  Visitor < ' v > > ( visitor :  & mut  V ,  param :  & ' v  GenericParam )  { 
741-     match  * param { 
742-         GenericParam :: Lifetime ( ref  ld)  => { 
743-             visitor. visit_id ( ld. lifetime . id ) ; 
744-             match  ld. lifetime . name  { 
745-                 LifetimeName :: Name ( name)  => { 
746-                     visitor. visit_name ( ld. lifetime . span ,  name) ; 
747-                 } 
748-                 LifetimeName :: Fresh ( _)  |
749-                 LifetimeName :: Static  |
750-                 LifetimeName :: Implicit  |
751-                 LifetimeName :: Underscore  => { } 
752-             } 
753-             walk_list ! ( visitor,  visit_lifetime,  & ld. bounds) ; 
754-         } 
755-         GenericParam :: Type ( ref  ty_param)  => { 
756-             visitor. visit_id ( ty_param. id ) ; 
757-             visitor. visit_name ( ty_param. span ,  ty_param. name ) ; 
758-             walk_list ! ( visitor,  visit_ty_param_bound,  & ty_param. bounds) ; 
759-             walk_list ! ( visitor,  visit_ty,  & ty_param. default ) ; 
760-             walk_list ! ( visitor,  visit_attribute,  ty_param. attrs. iter( ) ) ; 
761-         } 
744+     visitor. visit_id ( param. id ) ; 
745+     walk_list ! ( visitor,  visit_attribute,  & param. attrs) ; 
746+     match  param. name  { 
747+         ParamName :: Plain ( name)  => visitor. visit_name ( param. span ,  name) , 
748+         ParamName :: Fresh ( _)  => { } 
749+     } 
750+     match  param. kind  { 
751+         GenericParamKind :: Lifetime  {  .. }  => { } 
752+         GenericParamKind :: Type  {  ref  default,  .. }  => walk_list ! ( visitor,  visit_ty,  default ) , 
762753    } 
754+     walk_list ! ( visitor,  visit_param_bound,  & param. bounds) ; 
763755} 
764756
765757pub  fn  walk_generics < ' v ,  V :  Visitor < ' v > > ( visitor :  & mut  V ,  generics :  & ' v  Generics )  { 
@@ -778,14 +770,14 @@ pub fn walk_where_predicate<'v, V: Visitor<'v>>(
778770                                                            ref  bound_generic_params, 
779771                                                            ..} )  => { 
780772            visitor. visit_ty ( bounded_ty) ; 
781-             walk_list ! ( visitor,  visit_ty_param_bound ,  bounds) ; 
773+             walk_list ! ( visitor,  visit_param_bound ,  bounds) ; 
782774            walk_list ! ( visitor,  visit_generic_param,  bound_generic_params) ; 
783775        } 
784776        & WherePredicate :: RegionPredicate ( WhereRegionPredicate { ref  lifetime, 
785777                                                              ref  bounds, 
786778                                                              ..} )  => { 
787779            visitor. visit_lifetime ( lifetime) ; 
788-             walk_list ! ( visitor,  visit_lifetime ,  bounds) ; 
780+             walk_list ! ( visitor,  visit_param_bound ,  bounds) ; 
789781        } 
790782        & WherePredicate :: EqPredicate ( WhereEqPredicate { id, 
791783                                                      ref  lhs_ty, 
@@ -862,7 +854,7 @@ pub fn walk_trait_item<'v, V: Visitor<'v>>(visitor: &mut V, trait_item: &'v Trai
862854        } 
863855        TraitItemKind :: Type ( ref  bounds,  ref  default)  => { 
864856            visitor. visit_id ( trait_item. id ) ; 
865-             walk_list ! ( visitor,  visit_ty_param_bound ,  bounds) ; 
857+             walk_list ! ( visitor,  visit_param_bound ,  bounds) ; 
866858            walk_list ! ( visitor,  visit_ty,  default ) ; 
867859        } 
868860    } 
0 commit comments