@@ -326,6 +326,7 @@ macro_rules! make_ast_visitor {
326326 make_visit!{ Attribute ; visit_attribute, walk_attribute}
327327 make_visit!{ ClosureBinder ; visit_closure_binder, walk_closure_binder}
328328 make_visit!{ Crate ; visit_crate, walk_crate}
329+ make_visit!{ FnDecl ; visit_fn_decl, walk_fn_decl}
329330 make_visit!{ FnRetTy ; visit_fn_ret_ty, walk_fn_ret_ty}
330331 make_visit!{ FormatArgs ; visit_format_args, walk_format_args}
331332 make_visit!{ GenericArg ; visit_generic_arg, walk_generic_arg}
@@ -349,7 +350,6 @@ macro_rules! make_ast_visitor {
349350
350351 make_visit!{ P !( Block ) ; visit_block, walk_block}
351352 make_visit!{ P !( Expr ) ; visit_expr, walk_expr}
352- make_visit!{ P !( FnDecl ) ; visit_fn_decl, walk_fn_decl}
353353 make_visit!{ P !( Local ) ; visit_local, walk_local}
354354 make_visit!{ P !( Pat ) ; visit_pat, walk_pat}
355355 make_visit!{ P !( Ty ) ; visit_ty, walk_ty}
@@ -394,6 +394,16 @@ macro_rules! make_ast_visitor {
394394 return_result!( V )
395395 }
396396
397+ pub fn walk_fn_decl<$( $lt, ) ? V : $trait$( <$lt>) ?>(
398+ vis: & mut V ,
399+ decl: ref_t!( FnDecl )
400+ ) -> result!( V ) {
401+ let FnDecl { inputs, output } = decl;
402+ visit_list!( vis, visit_param, flat_map_param, inputs) ;
403+ try_v!( vis. visit_fn_ret_ty( output) ) ;
404+ return_result!( V )
405+ }
406+
397407 pub fn walk_fn_ret_ty<$( $lt, ) ? V : $trait$( <$lt>) ?>(
398408 vis: & mut V ,
399409 ret_ty: ref_t!( FnRetTy )
@@ -1099,14 +1109,6 @@ pub mod visit {
10991109 V :: Result :: output ( )
11001110 }
11011111
1102- pub fn walk_fn_decl < ' a , V : Visitor < ' a > > (
1103- visitor : & mut V ,
1104- FnDecl { inputs, output } : & ' a FnDecl ,
1105- ) -> V :: Result {
1106- walk_list ! ( visitor, visit_param, inputs) ;
1107- visitor. visit_fn_ret_ty ( output)
1108- }
1109-
11101112 pub fn walk_fn < ' a , V : Visitor < ' a > > ( visitor : & mut V , kind : FnKind < ' a > ) -> V :: Result {
11111113 match kind {
11121114 FnKind :: Fn ( _ctxt, _ident, FnSig { header, decl, span : _ } , _vis, generics, body) => {
@@ -2088,12 +2090,6 @@ pub mod mut_visit {
20882090 }
20892091 }
20902092
2091- fn walk_fn_decl < T : MutVisitor > ( vis : & mut T , decl : & mut P < FnDecl > ) {
2092- let FnDecl { inputs, output } = decl. deref_mut ( ) ;
2093- inputs. flat_map_in_place ( |param| vis. flat_map_param ( param) ) ;
2094- vis. visit_fn_ret_ty ( output) ;
2095- }
2096-
20972093 fn walk_param_bound < T : MutVisitor > ( vis : & mut T , pb : & mut GenericBound ) {
20982094 match pb {
20992095 GenericBound :: Trait ( ty, _modifier) => vis. visit_poly_trait_ref ( ty) ,
0 commit comments