Skip to content

Commit 2df457e

Browse files
committed
Unify impl WalkItemKind for ForeignItemKind
1 parent 5690469 commit 2df457e

File tree

1 file changed

+45
-77
lines changed

1 file changed

+45
-77
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 45 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1371,6 +1371,51 @@ macro_rules! make_ast_visitor {
13711371
}
13721372
}
13731373

1374+
impl WalkItemKind for ForeignItemKind {
1375+
fn walk<$($lt,)? V: $trait$(<$lt>)?>(
1376+
item: ref_t!(Item<Self>),
1377+
visitor: &mut V,
1378+
) -> result!(V) {
1379+
let Item { attrs, id, span, vis, ident, kind, tokens } = item;
1380+
try_v!(visit_id!(visitor, id));
1381+
visit_list!(visitor, visit_attribute, flat_map_attribute, attrs);
1382+
try_v!(visitor.visit_vis(vis));
1383+
try_v!(visit_ident!(visitor, ident));
1384+
match kind {
1385+
ForeignItemKind::Static(box StaticItem { safety, ty, mutability: _, expr }) => {
1386+
visit_safety!(visitor, safety);
1387+
try_v!(visitor.visit_ty(ty));
1388+
visit_o!(expr, |expr| visitor.visit_expr(expr));
1389+
}
1390+
ForeignItemKind::Fn(box Fn { defaultness, generics, sig, body }) => {
1391+
visit_defaultness!(visitor, defaultness);
1392+
let kind =
1393+
FnKind::Fn(FnCtxt::Foreign, *ident, sig, vis, generics, as_deref!(body));
1394+
visitor.visit_fn(kind, *span, *id);
1395+
}
1396+
ForeignItemKind::TyAlias(box TyAlias {
1397+
defaultness,
1398+
generics,
1399+
where_clauses,
1400+
bounds,
1401+
ty,
1402+
}) => {
1403+
visit_defaultness!(visitor, defaultness);
1404+
try_v!(visitor.visit_generics(generics));
1405+
visit_list!(visitor, visit_param_bound, bounds; BoundKind::Bound);
1406+
visit_o!(ty, |ty| visitor.visit_ty(ty));
1407+
walk_ty_alias_where_clauses!(visitor, where_clauses);
1408+
}
1409+
ForeignItemKind::MacCall(mac) => {
1410+
try_v!(visitor.visit_mac_call(mac));
1411+
}
1412+
}
1413+
visit_lazy_tts!(visitor, tokens);
1414+
try_v!(visit_span!(visitor, span));
1415+
return_result!(V)
1416+
}
1417+
}
1418+
13741419
make_walk_flat_map!{Arm, walk_flat_map_arm, visit_arm}
13751420
make_walk_flat_map!{Attribute, walk_flat_map_attribute, visit_attribute}
13761421
make_walk_flat_map!{ExprField, walk_flat_map_expr_field, visit_expr_field}
@@ -1511,44 +1556,6 @@ pub mod visit {
15111556
V::Result::output()
15121557
}
15131558

1514-
impl WalkItemKind for ForeignItemKind {
1515-
fn walk<'a, V: Visitor<'a>>(
1516-
item: &'a Item<Self>,
1517-
visitor: &mut V,
1518-
) -> V::Result {
1519-
let Item { id, span, ident, vis, attrs, kind, tokens: _ } = item;
1520-
walk_list!(visitor, visit_attribute, attrs);
1521-
try_visit!(visitor.visit_vis(vis));
1522-
try_visit!(visitor.visit_ident(*ident));
1523-
match kind {
1524-
ForeignItemKind::Static(box StaticItem { ty, mutability: _, expr, safety: _ }) => {
1525-
try_visit!(visitor.visit_ty(ty));
1526-
visit_opt!(visitor, visit_expr, expr);
1527-
}
1528-
ForeignItemKind::Fn(box Fn { defaultness: _, generics, sig, body }) => {
1529-
let kind =
1530-
FnKind::Fn(FnCtxt::Foreign, *ident, sig, vis, generics, body.as_deref());
1531-
try_visit!(visitor.visit_fn(kind, *span, *id));
1532-
}
1533-
ForeignItemKind::TyAlias(box TyAlias {
1534-
generics,
1535-
bounds,
1536-
ty,
1537-
defaultness: _,
1538-
where_clauses: _,
1539-
}) => {
1540-
try_visit!(visitor.visit_generics(generics));
1541-
walk_list!(visitor, visit_param_bound, bounds, BoundKind::Bound);
1542-
visit_opt!(visitor, visit_ty, ty);
1543-
}
1544-
ForeignItemKind::MacCall(mac) => {
1545-
try_visit!(visitor.visit_mac_call(mac));
1546-
}
1547-
}
1548-
V::Result::output()
1549-
}
1550-
}
1551-
15521559
pub fn walk_generic_param<'a, V: Visitor<'a>>(
15531560
visitor: &mut V,
15541561
param: &'a GenericParam,
@@ -2444,45 +2451,6 @@ pub mod mut_visit {
24442451
smallvec![item]
24452452
}
24462453

2447-
2448-
impl WalkItemKind for ForeignItemKind {
2449-
fn walk<V: MutVisitor>(item: &mut Item<Self>, visitor: &mut V) {
2450-
let Item { attrs, id, span, vis, ident, kind, tokens } = item;
2451-
visitor.visit_id(id);
2452-
visit_attrs(visitor, attrs);
2453-
visitor.visit_vis(vis);
2454-
visitor.visit_ident(ident);
2455-
match kind {
2456-
ForeignItemKind::Static(box StaticItem { ty, mutability: _, expr, safety: _ }) => {
2457-
visitor.visit_ty(ty);
2458-
visit_opt(expr, |expr| visitor.visit_expr(expr));
2459-
}
2460-
ForeignItemKind::Fn(box Fn { defaultness, generics, sig, body }) => {
2461-
visit_defaultness(visitor, defaultness);
2462-
let kind =
2463-
FnKind::Fn(FnCtxt::Foreign, *ident, sig, vis, generics, body.as_deref_mut());
2464-
visitor.visit_fn(kind, *span, *id);
2465-
}
2466-
ForeignItemKind::TyAlias(box TyAlias {
2467-
defaultness,
2468-
generics,
2469-
where_clauses,
2470-
bounds,
2471-
ty,
2472-
}) => {
2473-
visit_defaultness(visitor, defaultness);
2474-
visitor.visit_generics(generics);
2475-
visit_bounds(visitor, bounds, BoundKind::Bound);
2476-
visit_opt(ty, |ty| visitor.visit_ty(ty));
2477-
walk_ty_alias_where_clauses(visitor, where_clauses);
2478-
}
2479-
ForeignItemKind::MacCall(mac) => visitor.visit_mac_call(mac),
2480-
}
2481-
visit_lazy_tts(visitor, tokens);
2482-
visitor.visit_span(span);
2483-
}
2484-
}
2485-
24862454
pub fn walk_expr<T: MutVisitor>(
24872455
vis: &mut T,
24882456
Expr { kind, id, span, attrs, tokens }: &mut Expr,

0 commit comments

Comments
 (0)