Skip to content

Commit 69f44ff

Browse files
committed
Unify impl WalkItemKind for ForeignItemKind
1 parent 3226a7b commit 69f44ff

File tree

1 file changed

+42
-77
lines changed

1 file changed

+42
-77
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 42 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1364,6 +1364,48 @@ macro_rules! make_ast_visitor {
13641364
}
13651365
}
13661366

1367+
impl WalkItemKind for ForeignItemKind {
1368+
fn walk<$($lt,)? V: $trait$(<$lt>)?>(
1369+
&$($lt)? $($mut)? self,
1370+
id: NodeId,
1371+
span: Span,
1372+
vis: ref_t!(Visibility),
1373+
ident: ref_t!(Ident),
1374+
visitor: &mut V,
1375+
) -> result!(V) {
1376+
match self {
1377+
ForeignItemKind::Static(box StaticItem { safety, ty, mutability: _, expr }) => {
1378+
visit_safety!(visitor, safety);
1379+
try_v!(visitor.visit_ty(ty));
1380+
visit_o!(expr, |expr| visitor.visit_expr(expr));
1381+
}
1382+
ForeignItemKind::Fn(box Fn { defaultness, generics, sig, body }) => {
1383+
visit_defaultness!(visitor, defaultness);
1384+
let kind =
1385+
FnKind::Fn(FnCtxt::Foreign, *ident, sig, vis, generics, as_deref!(body));
1386+
visitor.visit_fn(kind, span, id);
1387+
}
1388+
ForeignItemKind::TyAlias(box TyAlias {
1389+
defaultness,
1390+
generics,
1391+
where_clauses,
1392+
bounds,
1393+
ty,
1394+
}) => {
1395+
visit_defaultness!(visitor, defaultness);
1396+
try_v!(visitor.visit_generics(generics));
1397+
visit_list!(visitor, visit_param_bound, bounds; BoundKind::Bound);
1398+
visit_o!(ty, |ty| visitor.visit_ty(ty));
1399+
walk_ty_alias_where_clauses!(visitor, where_clauses);
1400+
}
1401+
ForeignItemKind::MacCall(mac) => {
1402+
try_v!(visitor.visit_mac_call(mac));
1403+
}
1404+
}
1405+
return_result!(V)
1406+
}
1407+
}
1408+
13671409
make_walk_flat_map!{Arm, walk_flat_map_arm, visit_arm}
13681410
make_walk_flat_map!{Attribute, walk_flat_map_attribute, visit_attribute}
13691411
make_walk_flat_map!{ExprField, walk_flat_map_expr_field, visit_expr_field}
@@ -1516,44 +1558,6 @@ pub mod visit {
15161558
V::Result::output()
15171559
}
15181560

1519-
impl WalkItemKind for ForeignItemKind {
1520-
fn walk<'a, V: Visitor<'a>>(
1521-
&'a self,
1522-
id: NodeId,
1523-
span: Span,
1524-
vis: &'a Visibility,
1525-
ident: &'a Ident,
1526-
visitor: &mut V,
1527-
) -> V::Result {
1528-
match self {
1529-
ForeignItemKind::Static(box StaticItem { ty, mutability: _, expr, safety: _ }) => {
1530-
try_visit!(visitor.visit_ty(ty));
1531-
visit_opt!(visitor, visit_expr, expr);
1532-
}
1533-
ForeignItemKind::Fn(box Fn { defaultness: _, generics, sig, body }) => {
1534-
let kind =
1535-
FnKind::Fn(FnCtxt::Foreign, *ident, sig, vis, generics, body.as_deref());
1536-
try_visit!(visitor.visit_fn(kind, span, id));
1537-
}
1538-
ForeignItemKind::TyAlias(box TyAlias {
1539-
generics,
1540-
bounds,
1541-
ty,
1542-
defaultness: _,
1543-
where_clauses: _,
1544-
}) => {
1545-
try_visit!(visitor.visit_generics(generics));
1546-
walk_list!(visitor, visit_param_bound, bounds, BoundKind::Bound);
1547-
visit_opt!(visitor, visit_ty, ty);
1548-
}
1549-
ForeignItemKind::MacCall(mac) => {
1550-
try_visit!(visitor.visit_mac_call(mac));
1551-
}
1552-
}
1553-
V::Result::output()
1554-
}
1555-
}
1556-
15571561
pub fn walk_generic_param<'a, V: Visitor<'a>>(
15581562
visitor: &mut V,
15591563
param: &'a GenericParam,
@@ -2456,45 +2460,6 @@ pub mod mut_visit {
24562460
smallvec![item]
24572461
}
24582462

2459-
2460-
impl WalkItemKind for ForeignItemKind {
2461-
fn walk<V: MutVisitor>(
2462-
&mut self,
2463-
id: NodeId,
2464-
span: Span,
2465-
vis: &mut Visibility,
2466-
ident: &mut Ident,
2467-
visitor: &mut V
2468-
) {
2469-
match self {
2470-
ForeignItemKind::Static(box StaticItem { ty, mutability: _, expr, safety: _ }) => {
2471-
visitor.visit_ty(ty);
2472-
visit_opt(expr, |expr| visitor.visit_expr(expr));
2473-
}
2474-
ForeignItemKind::Fn(box Fn { defaultness, generics, sig, body }) => {
2475-
visit_defaultness(visitor, defaultness);
2476-
let kind =
2477-
FnKind::Fn(FnCtxt::Foreign, *ident, sig, vis, generics, body.as_deref_mut());
2478-
visitor.visit_fn(kind, span, id);
2479-
}
2480-
ForeignItemKind::TyAlias(box TyAlias {
2481-
defaultness,
2482-
generics,
2483-
where_clauses,
2484-
bounds,
2485-
ty,
2486-
}) => {
2487-
visit_defaultness(visitor, defaultness);
2488-
visitor.visit_generics(generics);
2489-
visit_bounds(visitor, bounds, BoundKind::Bound);
2490-
visit_opt(ty, |ty| visitor.visit_ty(ty));
2491-
walk_ty_alias_where_clauses(visitor, where_clauses);
2492-
}
2493-
ForeignItemKind::MacCall(mac) => visitor.visit_mac_call(mac),
2494-
}
2495-
}
2496-
}
2497-
24982463
pub fn walk_expr<T: MutVisitor>(
24992464
vis: &mut T,
25002465
Expr { kind, id, span, attrs, tokens }: &mut Expr,

0 commit comments

Comments
 (0)