@@ -314,8 +314,8 @@ pub trait Visitor<'v> : Sized {
314
314
fn visit_trait_ref ( & mut self , t : & ' v TraitRef ) {
315
315
walk_trait_ref ( self , t)
316
316
}
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)
319
319
}
320
320
fn visit_poly_trait_ref ( & mut self , t : & ' v PolyTraitRef , m : TraitBoundModifier ) {
321
321
walk_poly_trait_ref ( self , t, m)
@@ -344,6 +344,12 @@ pub trait Visitor<'v> : Sized {
344
344
fn visit_label ( & mut self , label : & ' v Label ) {
345
345
walk_label ( self , label)
346
346
}
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
+ }
347
353
fn visit_lifetime ( & mut self , lifetime : & ' v Lifetime ) {
348
354
walk_lifetime ( self , lifetime)
349
355
}
@@ -356,8 +362,8 @@ pub trait Visitor<'v> : Sized {
356
362
fn visit_path_segment ( & mut self , path_span : Span , path_segment : & ' v PathSegment ) {
357
363
walk_path_segment ( self , path_span, path_segment)
358
364
}
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 )
361
367
}
362
368
fn visit_assoc_type_binding ( & mut self , type_binding : & ' v TypeBinding ) {
363
369
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) {
427
433
pub fn walk_lifetime < ' v , V : Visitor < ' v > > ( visitor : & mut V , lifetime : & ' v Lifetime ) {
428
434
visitor. visit_id ( lifetime. id ) ;
429
435
match lifetime. name {
430
- LifetimeName :: Name ( name) => {
436
+ LifetimeName :: Param ( ParamName :: Plain ( name) ) => {
431
437
visitor. visit_name ( lifetime. span , name) ;
432
438
}
433
- LifetimeName :: Fresh ( _) |
439
+ LifetimeName :: Param ( ParamName :: Fresh ( _) ) |
434
440
LifetimeName :: Static |
435
441
LifetimeName :: Implicit |
436
442
LifetimeName :: Underscore => { }
@@ -505,7 +511,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) {
505
511
ItemExistential ( ExistTy { ref generics, ref bounds, impl_trait_fn} ) => {
506
512
visitor. visit_id ( item. id ) ;
507
513
walk_generics ( visitor, generics) ;
508
- walk_list ! ( visitor, visit_ty_param_bound , bounds) ;
514
+ walk_list ! ( visitor, visit_param_bound , bounds) ;
509
515
if let Some ( impl_trait_fn) = impl_trait_fn {
510
516
visitor. visit_def_mention ( Def :: Fn ( impl_trait_fn) )
511
517
}
@@ -531,13 +537,13 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) {
531
537
ItemTrait ( .., ref generics, ref bounds, ref trait_item_refs) => {
532
538
visitor. visit_id ( item. id ) ;
533
539
visitor. visit_generics ( generics) ;
534
- walk_list ! ( visitor, visit_ty_param_bound , bounds) ;
540
+ walk_list ! ( visitor, visit_param_bound , bounds) ;
535
541
walk_list ! ( visitor, visit_trait_item_ref, trait_item_refs) ;
536
542
}
537
543
ItemTraitAlias ( ref generics, ref bounds) => {
538
544
visitor. visit_id ( item. id ) ;
539
545
visitor. visit_generics ( generics) ;
540
- walk_list ! ( visitor, visit_ty_param_bound , bounds) ;
546
+ walk_list ! ( visitor, visit_param_bound , bounds) ;
541
547
}
542
548
}
543
549
walk_list ! ( visitor, visit_attribute, & item. attrs) ;
@@ -642,17 +648,16 @@ pub fn walk_path_segment<'v, V: Visitor<'v>>(visitor: &mut V,
642
648
path_span : Span ,
643
649
segment : & ' v PathSegment ) {
644
650
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 ) ;
647
653
}
648
654
}
649
655
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) ;
656
661
}
657
662
658
663
pub 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
726
731
walk_list ! ( visitor, visit_attribute, & foreign_item. attrs) ;
727
732
}
728
733
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 ) {
730
735
match * bound {
731
- TraitTyParamBound ( ref typ, modifier) => {
736
+ GenericBound :: Trait ( ref typ, modifier) => {
732
737
visitor. visit_poly_trait_ref ( typ, modifier) ;
733
738
}
734
- RegionTyParamBound ( ref lifetime) => {
735
- visitor. visit_lifetime ( lifetime) ;
736
- }
739
+ GenericBound :: Outlives ( ref lifetime) => visitor. visit_lifetime ( lifetime) ,
737
740
}
738
741
}
739
742
740
743
pub 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 ) ,
762
753
}
754
+ walk_list ! ( visitor, visit_param_bound, & param. bounds) ;
763
755
}
764
756
765
757
pub 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>>(
778
770
ref bound_generic_params,
779
771
..} ) => {
780
772
visitor. visit_ty ( bounded_ty) ;
781
- walk_list ! ( visitor, visit_ty_param_bound , bounds) ;
773
+ walk_list ! ( visitor, visit_param_bound , bounds) ;
782
774
walk_list ! ( visitor, visit_generic_param, bound_generic_params) ;
783
775
}
784
776
& WherePredicate :: RegionPredicate ( WhereRegionPredicate { ref lifetime,
785
777
ref bounds,
786
778
..} ) => {
787
779
visitor. visit_lifetime ( lifetime) ;
788
- walk_list ! ( visitor, visit_lifetime , bounds) ;
780
+ walk_list ! ( visitor, visit_param_bound , bounds) ;
789
781
}
790
782
& WherePredicate :: EqPredicate ( WhereEqPredicate { id,
791
783
ref lhs_ty,
@@ -862,7 +854,7 @@ pub fn walk_trait_item<'v, V: Visitor<'v>>(visitor: &mut V, trait_item: &'v Trai
862
854
}
863
855
TraitItemKind :: Type ( ref bounds, ref default) => {
864
856
visitor. visit_id ( trait_item. id ) ;
865
- walk_list ! ( visitor, visit_ty_param_bound , bounds) ;
857
+ walk_list ! ( visitor, visit_param_bound , bounds) ;
866
858
walk_list ! ( visitor, visit_ty, default ) ;
867
859
}
868
860
}
0 commit comments