Skip to content

Commit 030b707

Browse files
committed
Unify walk_arm
1 parent 4cc88d0 commit 030b707

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,15 @@ macro_rules! make_ast_visitor {
418418
}
419419
}
420420

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+
421430
pub fn walk_ident<$($lt,)? V: $trait$(<$lt>)?>(
422431
vis: &mut V,
423432
ident: if_mut_ty!(ref_t!(Ident), Ident)
@@ -691,6 +700,20 @@ macro_rules! make_ast_visitor {
691700
return_result!(V)
692701
}
693702

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+
694717
make_walk_flat_map!{Arm, walk_flat_map_arm, visit_arm}
695718
make_walk_flat_map!{Attribute, walk_flat_map_attribute, visit_attribute}
696719
make_walk_flat_map!{ExprField, walk_flat_map_expr_field, visit_expr_field}
@@ -1604,15 +1627,6 @@ pub mod visit {
16041627
visitor.visit_expr_post(expression)
16051628
}
16061629

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-
16161630
pub fn walk_vis<'a, V: Visitor<'a>>(visitor: &mut V, vis: &'a Visibility) -> V::Result {
16171631
let Visibility { kind, span: _, tokens: _ } = vis;
16181632
match kind {
@@ -1812,16 +1826,6 @@ pub mod mut_visit {
18121826
vis.visit_span(span);
18131827
}
18141828

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-
18251829
fn walk_assoc_item_constraint<T: MutVisitor>(
18261830
vis: &mut T,
18271831
AssocItemConstraint { id, ident, gen_args, kind, span }: &mut AssocItemConstraint,

0 commit comments

Comments
 (0)