@@ -525,29 +525,8 @@ pub fn walk_pat<'a, V: Visitor<'a>>(visitor: &mut V, pattern: &'a Pat) {
525
525
}
526
526
527
527
pub fn walk_foreign_item < ' a , V : Visitor < ' a > > ( visitor : & mut V , item : & ' a ForeignItem ) {
528
- visitor. visit_vis ( & item. vis ) ;
529
- visitor. visit_ident ( item. ident ) ;
530
-
531
- match item. kind {
532
- ForeignItemKind :: Fn ( ref sig, ref generics, ref body) => {
533
- visitor. visit_generics ( generics) ;
534
- let kind = FnKind :: Fn ( FnCtxt :: Foreign , item. ident , sig, & item. vis , body. as_deref ( ) ) ;
535
- visitor. visit_fn ( kind, item. span , item. id ) ;
536
- }
537
- ForeignItemKind :: Const ( ref typ, ref body)
538
- | ForeignItemKind :: Static ( ref typ, _, ref body) => {
539
- visitor. visit_ty ( typ) ;
540
- walk_list ! ( visitor, visit_expr, body) ;
541
- }
542
- ForeignItemKind :: TyAlias ( ref generics, ref bounds, ref ty) => {
543
- visitor. visit_generics ( generics) ;
544
- walk_list ! ( visitor, visit_param_bound, bounds) ;
545
- walk_list ! ( visitor, visit_ty, ty) ;
546
- }
547
- ForeignItemKind :: Macro ( ref mac) => visitor. visit_mac ( mac) ,
548
- }
549
-
550
- walk_list ! ( visitor, visit_attribute, & item. attrs) ;
528
+ let ForeignItem { id, span, ident, vis, attrs, kind, tokens : _ } = item;
529
+ walk_nested_item ( visitor, * id, * span, * ident, vis, attrs, kind, FnCtxt :: Foreign ) ;
551
530
}
552
531
553
532
pub fn walk_global_asm < ' a , V : Visitor < ' a > > ( _: & mut V , _: & ' a GlobalAsm ) {
@@ -630,25 +609,39 @@ pub fn walk_fn<'a, V: Visitor<'a>>(visitor: &mut V, kind: FnKind<'a>, _span: Spa
630
609
}
631
610
632
611
pub fn walk_assoc_item < ' a , V : Visitor < ' a > > ( visitor : & mut V , item : & ' a AssocItem , ctxt : AssocCtxt ) {
633
- visitor. visit_vis ( & item. vis ) ;
634
- visitor. visit_ident ( item. ident ) ;
635
- walk_list ! ( visitor, visit_attribute, & item. attrs) ;
636
- match item. kind {
637
- AssocItemKind :: Const ( ref ty, ref expr) | AssocItemKind :: Static ( ref ty, _, ref expr) => {
612
+ let AssocItem { id, span, ident, vis, attrs, kind, tokens : _, defaultness : _ } = item;
613
+ walk_nested_item ( visitor, * id, * span, * ident, vis, attrs, kind, FnCtxt :: Assoc ( ctxt) ) ;
614
+ }
615
+
616
+ fn walk_nested_item < ' a , V : Visitor < ' a > > (
617
+ visitor : & mut V ,
618
+ id : NodeId ,
619
+ span : Span ,
620
+ ident : Ident ,
621
+ vis : & ' a Visibility ,
622
+ attrs : & ' a [ Attribute ] ,
623
+ kind : & ' a AssocItemKind ,
624
+ ctxt : FnCtxt ,
625
+ ) {
626
+ visitor. visit_vis ( vis) ;
627
+ visitor. visit_ident ( ident) ;
628
+ walk_list ! ( visitor, visit_attribute, attrs) ;
629
+ match kind {
630
+ AssocItemKind :: Const ( ty, expr) | AssocItemKind :: Static ( ty, _, expr) => {
638
631
visitor. visit_ty ( ty) ;
639
632
walk_list ! ( visitor, visit_expr, expr) ;
640
633
}
641
- AssocItemKind :: Fn ( ref sig, ref generics, ref body) => {
634
+ AssocItemKind :: Fn ( sig, generics, body) => {
642
635
visitor. visit_generics ( generics) ;
643
- let kind = FnKind :: Fn ( FnCtxt :: Assoc ( ctxt) , item . ident , sig, & item . vis , body. as_deref ( ) ) ;
644
- visitor. visit_fn ( kind, item . span , item . id ) ;
636
+ let kind = FnKind :: Fn ( ctxt, ident, sig, vis, body. as_deref ( ) ) ;
637
+ visitor. visit_fn ( kind, span, id) ;
645
638
}
646
- AssocItemKind :: TyAlias ( ref generics, ref bounds, ref ty) => {
639
+ AssocItemKind :: TyAlias ( generics, bounds, ty) => {
647
640
visitor. visit_generics ( generics) ;
648
641
walk_list ! ( visitor, visit_param_bound, bounds) ;
649
642
walk_list ! ( visitor, visit_ty, ty) ;
650
643
}
651
- AssocItemKind :: Macro ( ref mac) => {
644
+ AssocItemKind :: Macro ( mac) => {
652
645
visitor. visit_mac ( mac) ;
653
646
}
654
647
}
0 commit comments