@@ -418,6 +418,15 @@ macro_rules! make_ast_visitor {
418
418
}
419
419
}
420
420
421
+ // TODO: temporary name
422
+ macro_rules! visit_o {
423
+ ( $opt: expr, $fn: expr) => {
424
+ if let Some ( elem) = $opt {
425
+ try_v!( $fn( elem) )
426
+ }
427
+ }
428
+ }
429
+
421
430
pub fn walk_ident<$( $lt, ) ? V : $trait$( <$lt>) ?>(
422
431
vis: & mut V ,
423
432
ident: if_mut_ty!( ref_t!( Ident ) , Ident )
@@ -691,6 +700,20 @@ macro_rules! make_ast_visitor {
691
700
return_result!( V )
692
701
}
693
702
703
+ pub fn walk_arm<$( $lt, ) ? V : $trait$( <$lt>) ?>(
704
+ vis: & mut V ,
705
+ arm: ref_t!( Arm )
706
+ ) -> result!( V ) {
707
+ let Arm { attrs, pat, guard, body, span, id, is_placeholder: _ } = arm;
708
+ try_v!( visit_id!( vis, id) ) ;
709
+ visit_list!( vis, visit_attribute, flat_map_attribute, attrs) ;
710
+ try_v!( vis. visit_pat( pat) ) ;
711
+ visit_o!( guard, |guard| vis. visit_expr( guard) ) ;
712
+ visit_o!( body, |body| vis. visit_expr( body) ) ;
713
+ try_v!( visit_span!( vis, span) ) ;
714
+ return_result!( V )
715
+ }
716
+
694
717
make_walk_flat_map!{ Arm , walk_flat_map_arm, visit_arm}
695
718
make_walk_flat_map!{ Attribute , walk_flat_map_attribute, visit_attribute}
696
719
make_walk_flat_map!{ ExprField , walk_flat_map_expr_field, visit_expr_field}
@@ -1604,15 +1627,6 @@ pub mod visit {
1604
1627
visitor. visit_expr_post ( expression)
1605
1628
}
1606
1629
1607
- pub fn walk_arm < ' a , V : Visitor < ' a > > ( visitor : & mut V , arm : & ' a Arm ) -> V :: Result {
1608
- let Arm { attrs, pat, guard, body, span : _, id : _, is_placeholder : _ } = arm;
1609
- walk_list ! ( visitor, visit_attribute, attrs) ;
1610
- try_visit ! ( visitor. visit_pat( pat) ) ;
1611
- visit_opt ! ( visitor, visit_expr, guard) ;
1612
- visit_opt ! ( visitor, visit_expr, body) ;
1613
- V :: Result :: output ( )
1614
- }
1615
-
1616
1630
pub fn walk_vis < ' a , V : Visitor < ' a > > ( visitor : & mut V , vis : & ' a Visibility ) -> V :: Result {
1617
1631
let Visibility { kind, span : _, tokens : _ } = vis;
1618
1632
match kind {
@@ -1812,16 +1826,6 @@ pub mod mut_visit {
1812
1826
vis. visit_span ( span) ;
1813
1827
}
1814
1828
1815
- pub fn walk_arm < T : MutVisitor > ( vis : & mut T , arm : & mut Arm ) {
1816
- let Arm { attrs, pat, guard, body, span, id, is_placeholder : _ } = arm;
1817
- vis. visit_id ( id) ;
1818
- visit_attrs ( vis, attrs) ;
1819
- vis. visit_pat ( pat) ;
1820
- visit_opt ( guard, |guard| vis. visit_expr ( guard) ) ;
1821
- visit_opt ( body, |body| vis. visit_expr ( body) ) ;
1822
- vis. visit_span ( span) ;
1823
- }
1824
-
1825
1829
fn walk_assoc_item_constraint < T : MutVisitor > (
1826
1830
vis : & mut T ,
1827
1831
AssocItemConstraint { id, ident, gen_args, kind, span } : & mut AssocItemConstraint ,
0 commit comments