Skip to content

Commit cdd181a

Browse files
committed
Unify impl WalkItemKind for ForeignItemKind
1 parent 32b34d2 commit cdd181a

File tree

1 file changed

+42
-80
lines changed

1 file changed

+42
-80
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 42 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1439,6 +1439,48 @@ macro_rules! make_ast_visitor {
14391439
}
14401440
}
14411441

1442+
impl WalkItemKind for ForeignItemKind {
1443+
fn walk<$($lt,)? V: $trait$(<$lt>)?>(
1444+
&$($lt)? $($mut)? self,
1445+
id: NodeId,
1446+
span: Span,
1447+
vis: ref_t!(Visibility),
1448+
ident: ref_t!(Ident),
1449+
visitor: &mut V,
1450+
) -> result!(V) {
1451+
match self {
1452+
ForeignItemKind::Static(box StaticItem { safety, ty, mutability: _, expr }) => {
1453+
try_v!(visitor.visit_safety(safety));
1454+
try_v!(visitor.visit_ty(ty));
1455+
visit_o!(expr, |expr| visitor.visit_expr(expr));
1456+
}
1457+
ForeignItemKind::Fn(box Fn { defaultness, generics, sig, body }) => {
1458+
try_v!(visitor.visit_defaultness(defaultness));
1459+
let kind =
1460+
FnKind::Fn(FnCtxt::Foreign, ident, sig, vis, generics, body);
1461+
visitor.visit_fn(kind, span, id);
1462+
}
1463+
ForeignItemKind::TyAlias(box TyAlias {
1464+
defaultness,
1465+
generics,
1466+
where_clauses,
1467+
bounds,
1468+
ty,
1469+
}) => {
1470+
try_v!(visitor.visit_defaultness(defaultness));
1471+
try_v!(visitor.visit_generics(generics));
1472+
visit_list!(visitor, visit_param_bound, bounds; BoundKind::Bound);
1473+
visit_o!(ty, |ty| visitor.visit_ty(ty));
1474+
try_v!(visitor.visit_ty_alias_where_clauses(where_clauses));
1475+
}
1476+
ForeignItemKind::MacCall(mac) => {
1477+
try_v!(visitor.visit_mac_call(mac));
1478+
}
1479+
}
1480+
return_result!(V)
1481+
}
1482+
}
1483+
14421484
pub fn walk_item<$($lt,)? V: $trait$(<$lt>)?>(
14431485
visitor: &mut V,
14441486
item: ref_t!(Item<impl WalkItemKind>),
@@ -1584,46 +1626,6 @@ pub mod visit {
15841626

15851627
make_ast_visitor!(Visitor<'ast>);
15861628

1587-
impl WalkItemKind for ForeignItemKind {
1588-
fn walk<'a, V: Visitor<'a>>(
1589-
&'a self,
1590-
id: NodeId,
1591-
span: Span,
1592-
vis: &'a Visibility,
1593-
ident: &'a Ident,
1594-
visitor: &mut V,
1595-
) -> V::Result {
1596-
match self {
1597-
ForeignItemKind::Static(box StaticItem { ty, mutability: _, expr, safety: _ }) => {
1598-
try_visit!(visitor.visit_ty(ty));
1599-
visit_opt!(visitor, visit_expr, expr);
1600-
}
1601-
ForeignItemKind::Fn(box Fn { defaultness, generics, sig, body }) => {
1602-
try_visit!(visitor.visit_defaultness(defaultness));
1603-
let kind = FnKind::Fn(FnCtxt::Foreign, ident, sig, vis, generics, body);
1604-
try_visit!(visitor.visit_fn(kind, span, id));
1605-
}
1606-
ForeignItemKind::TyAlias(box TyAlias {
1607-
generics,
1608-
bounds,
1609-
ty,
1610-
defaultness,
1611-
where_clauses,
1612-
}) => {
1613-
try_visit!(visitor.visit_defaultness(defaultness));
1614-
try_visit!(visitor.visit_generics(generics));
1615-
walk_list!(visitor, visit_param_bound, bounds, BoundKind::Bound);
1616-
visit_opt!(visitor, visit_ty, ty);
1617-
try_visit!(visitor.visit_ty_alias_where_clauses(where_clauses));
1618-
}
1619-
ForeignItemKind::MacCall(mac) => {
1620-
try_visit!(visitor.visit_mac_call(mac));
1621-
}
1622-
}
1623-
V::Result::output()
1624-
}
1625-
}
1626-
16271629
pub fn walk_assoc_item<'a, V: Visitor<'a>>(
16281630
visitor: &mut V,
16291631
item: &'a AssocItem,
@@ -2298,46 +2300,6 @@ pub mod mut_visit {
22982300
smallvec![item]
22992301
}
23002302

2301-
impl WalkItemKind for ForeignItemKind {
2302-
fn walk<V: MutVisitor>(
2303-
&mut self,
2304-
id: NodeId,
2305-
span: Span,
2306-
vis: &mut Visibility,
2307-
ident: &mut Ident,
2308-
visitor: &mut V,
2309-
) {
2310-
match self {
2311-
ForeignItemKind::Static(box StaticItem { ty, mutability: _, expr, safety: _ }) => {
2312-
visitor.visit_ty(ty);
2313-
visit_opt(expr, |expr| visitor.visit_expr(expr));
2314-
}
2315-
ForeignItemKind::Fn(box Fn { defaultness, generics, sig, body }) => {
2316-
visitor.visit_defaultness(defaultness);
2317-
visitor.visit_fn(
2318-
FnKind::Fn(FnCtxt::Foreign, ident, sig, vis, generics, body),
2319-
span,
2320-
id,
2321-
);
2322-
}
2323-
ForeignItemKind::TyAlias(box TyAlias {
2324-
defaultness,
2325-
generics,
2326-
where_clauses,
2327-
bounds,
2328-
ty,
2329-
}) => {
2330-
visitor.visit_defaultness(defaultness);
2331-
visitor.visit_generics(generics);
2332-
visit_bounds(visitor, bounds, BoundKind::Bound);
2333-
visit_opt(ty, |ty| visitor.visit_ty(ty));
2334-
visitor.visit_ty_alias_where_clauses(where_clauses);
2335-
}
2336-
ForeignItemKind::MacCall(mac) => visitor.visit_mac_call(mac),
2337-
}
2338-
}
2339-
}
2340-
23412303
pub fn walk_expr<T: MutVisitor>(
23422304
vis: &mut T,
23432305
Expr { kind, id, span, attrs, tokens }: &mut Expr,

0 commit comments

Comments
 (0)