@@ -305,7 +305,7 @@ macro_rules! make_ast_visitor {
305
305
make_visit!{ CaptureBy , visit_capture_by, walk_capture_by}
306
306
make_visit!{ VariantData , visit_variant_data, walk_variant_data}
307
307
make_visit!{ FnDecl , visit_fn_decl, walk_fn_decl}
308
- make_visit!{ P ! ( Local ) , visit_local, walk_local}
308
+ make_visit!{ Local , visit_local, walk_local}
309
309
make_visit!{ P !( Pat ) , visit_pat, walk_pat}
310
310
make_visit!{ P !( Expr ) , visit_expr, walk_expr}
311
311
make_visit!{ P !( Block ) , visit_block, walk_block}
@@ -818,6 +818,32 @@ macro_rules! make_ast_visitor {
818
818
return_result!( V )
819
819
}
820
820
821
+ pub fn walk_local<$( $lt, ) ? V : $trait$( <$lt>) ?>(
822
+ vis: & mut V ,
823
+ local: ref_t!( Local )
824
+ ) -> result!( V ) {
825
+ let Local { id, pat, ty, kind, span, colon_sp, attrs, tokens } = local;
826
+ try_v!( visit_id!( vis, id) ) ;
827
+ visit_list!( vis, visit_attribute, flat_map_attribute, attrs) ;
828
+ try_v!( vis. visit_pat( pat) ) ;
829
+ visit_o!( ty, |ty| vis. visit_ty( ty) ) ;
830
+ match kind {
831
+ LocalKind :: Decl => { }
832
+ LocalKind :: Init ( init) => {
833
+ try_v!( vis. visit_expr( init) ) ;
834
+ }
835
+ LocalKind :: InitElse ( init, els) => {
836
+ try_v!( vis. visit_expr( init) ) ;
837
+ try_v!( vis. visit_block( els) ) ;
838
+ }
839
+ }
840
+ // TODO: Weird
841
+ if_mut_expr!( visit_lazy_tts( vis, tokens) , { let _ = tokens; } ) ;
842
+ visit_o!( colon_sp, |sp| try_v!( visit_span!( vis, sp) ) ) ;
843
+ try_v!( visit_span!( vis, span) ) ;
844
+ return_result!( V )
845
+ }
846
+
821
847
make_walk_flat_map!{ Arm , walk_flat_map_arm, visit_arm}
822
848
make_walk_flat_map!{ Attribute , walk_flat_map_attribute, visit_attribute}
823
849
make_walk_flat_map!{ ExprField , walk_flat_map_expr_field, visit_expr_field}
@@ -957,18 +983,6 @@ pub mod visit {
957
983
958
984
make_ast_visitor ! ( Visitor <' ast>) ;
959
985
960
- pub fn walk_local < ' a , V : Visitor < ' a > > ( visitor : & mut V , local : & ' a Local ) -> V :: Result {
961
- let Local { id : _, pat, ty, kind, span : _, colon_sp : _, attrs, tokens : _ } = local;
962
- walk_list ! ( visitor, visit_attribute, attrs) ;
963
- try_visit ! ( visitor. visit_pat( pat) ) ;
964
- visit_opt ! ( visitor, visit_ty, ty) ;
965
- if let Some ( ( init, els) ) = kind. init_else_opt ( ) {
966
- try_visit ! ( visitor. visit_expr( init) ) ;
967
- visit_opt ! ( visitor, visit_block, els) ;
968
- }
969
- V :: Result :: output ( )
970
- }
971
-
972
986
pub fn walk_trait_ref < ' a , V : Visitor < ' a > > (
973
987
visitor : & mut V ,
974
988
trait_ref : & ' a TraitRef ,
@@ -1956,27 +1970,6 @@ pub mod mut_visit {
1956
1970
}
1957
1971
}
1958
1972
1959
- fn walk_local < T : MutVisitor > ( vis : & mut T , local : & mut P < Local > ) {
1960
- let Local { id, pat, ty, kind, span, colon_sp, attrs, tokens } = local. deref_mut ( ) ;
1961
- vis. visit_id ( id) ;
1962
- visit_attrs ( vis, attrs) ;
1963
- vis. visit_pat ( pat) ;
1964
- visit_opt ( ty, |ty| vis. visit_ty ( ty) ) ;
1965
- match kind {
1966
- LocalKind :: Decl => { }
1967
- LocalKind :: Init ( init) => {
1968
- vis. visit_expr ( init) ;
1969
- }
1970
- LocalKind :: InitElse ( init, els) => {
1971
- vis. visit_expr ( init) ;
1972
- vis. visit_block ( els) ;
1973
- }
1974
- }
1975
- visit_lazy_tts ( vis, tokens) ;
1976
- visit_opt ( colon_sp, |sp| vis. visit_span ( sp) ) ;
1977
- vis. visit_span ( span) ;
1978
- }
1979
-
1980
1973
fn walk_attribute < T : MutVisitor > ( vis : & mut T , attr : & mut Attribute ) {
1981
1974
let Attribute { kind, id : _, style : _, span } = attr;
1982
1975
match kind {
0 commit comments