Skip to content

Commit 5171110

Browse files
committed
Unify walk_fn_decl
1 parent a19a5e6 commit 5171110

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,10 @@ macro_rules! make_ast_visitor {
229229
($t: ty) => { if_mut_ty!(P<$t>, $t) }
230230
}
231231

232+
macro_rules! deref_P {
233+
($p: expr) => { if_mut_expr!($p.deref_mut(), $p) }
234+
}
235+
232236
macro_rules! make_visit {
233237
($ty: ty, $visit: ident, $walk: ident) => {
234238
fn $visit(&mut self, arg: ref_t!($ty)) -> result!() {
@@ -554,6 +558,16 @@ macro_rules! make_ast_visitor {
554558
return_result!(V)
555559
}
556560

561+
pub fn walk_fn_decl<$($lt,)? V: $trait$(<$lt>)?>(
562+
vis: &mut V,
563+
decl: ref_t!(P!(FnDecl))
564+
) -> result!(V) {
565+
let FnDecl { inputs, output } = deref_P!(decl);
566+
visit_list!(vis, visit_param, flat_map_param, inputs);
567+
try_v!(vis.visit_fn_ret_ty(output));
568+
return_result!(V)
569+
}
570+
557571
make_walk_flat_map!{Arm, walk_flat_map_arm, visit_arm}
558572
make_walk_flat_map!{ExprField, walk_flat_map_expr_field, visit_expr_field}
559573
make_walk_flat_map!{FieldDef, walk_flat_map_field_def, visit_field_def}
@@ -1171,14 +1185,6 @@ pub mod visit {
11711185
V::Result::output()
11721186
}
11731187

1174-
pub fn walk_fn_decl<'a, V: Visitor<'a>>(
1175-
visitor: &mut V,
1176-
FnDecl { inputs, output }: &'a FnDecl,
1177-
) -> V::Result {
1178-
walk_list!(visitor, visit_param, inputs);
1179-
visitor.visit_fn_ret_ty(output)
1180-
}
1181-
11821188
pub fn walk_fn<'a, V: Visitor<'a>>(visitor: &mut V, kind: FnKind<'a>) -> V::Result {
11831189
match kind {
11841190
FnKind::Fn(_ctxt, _ident, FnSig { header, decl, span: _ }, _vis, generics, body) => {
@@ -2190,12 +2196,6 @@ pub mod mut_visit {
21902196
}
21912197
}
21922198

2193-
fn walk_fn_decl<T: MutVisitor>(vis: &mut T, decl: &mut P<FnDecl>) {
2194-
let FnDecl { inputs, output } = decl.deref_mut();
2195-
inputs.flat_map_in_place(|param| vis.flat_map_param(param));
2196-
vis.visit_fn_ret_ty(output);
2197-
}
2198-
21992199
fn walk_param_bound<T: MutVisitor>(vis: &mut T, pb: &mut GenericBound) {
22002200
match pb {
22012201
GenericBound::Trait(ty, _modifier) => vis.visit_poly_trait_ref(ty),

0 commit comments

Comments
 (0)