Skip to content

Commit b5f5634

Browse files
committed
Unify {visit,walk}_generic_param
1 parent af0294e commit b5f5634

File tree

1 file changed

+26
-40
lines changed

1 file changed

+26
-40
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 26 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,6 @@ macro_rules! make_ast_visitor {
283283

284284
make_visit!{AssocItem, ctxt: AssocCtxt; visit_assoc_item, walk_assoc_item}
285285
make_visit!{ForeignItem; visit_foreign_item, walk_item}
286-
make_visit!{GenericParam; visit_generic_param, walk_generic_param}
287286
make_visit!{Item; visit_item, walk_item}
288287
make_visit!{Stmt; visit_stmt, walk_stmt}
289288

@@ -324,6 +323,7 @@ macro_rules! make_ast_visitor {
324323
make_visit!{GenericArg; visit_generic_arg, walk_generic_arg}
325324
make_visit!{GenericArgs; visit_generic_args, walk_generic_args}
326325
make_visit!{GenericBound, _ ctxt: BoundKind; visit_param_bound, walk_param_bound}
326+
make_visit!{GenericParam; visit_generic_param, walk_generic_param}
327327
make_visit!{Generics; visit_generics, walk_generics}
328328
make_visit!{Ident; visit_ident, walk_ident}
329329
make_visit!{InlineAsm; visit_inline_asm, walk_inline_asm}
@@ -567,6 +567,30 @@ macro_rules! make_ast_visitor {
567567
return_result!(V)
568568
}
569569

570+
pub fn walk_generic_param<$($lt,)? V: $trait$(<$lt>)?>(
571+
vis: &mut V,
572+
param: ref_t!(GenericParam)
573+
) -> result!(V) {
574+
let GenericParam { id, ident, attrs, bounds, kind, colon_span, is_placeholder: _ } = param;
575+
try_v!(visit_id!(vis, id));
576+
visit_list!(vis, visit_attribute, attrs);
577+
try_v!(vis.visit_ident(ident));
578+
visit_list!(vis, visit_param_bound, bounds; BoundKind::Bound);
579+
match kind {
580+
GenericParamKind::Lifetime => {}
581+
GenericParamKind::Type { default } => {
582+
visit_o!(default, |default| vis.visit_ty(default));
583+
}
584+
GenericParamKind::Const { ty, kw_span, default } => {
585+
try_v!(vis.visit_ty(ty));
586+
visit_o!(default, |default| vis.visit_anon_const(default));
587+
try_v!(visit_span!(vis, kw_span));
588+
}
589+
}
590+
visit_o!(colon_span, |span| visit_span!(vis, span));
591+
return_result!(V)
592+
}
593+
570594
pub fn walk_generics<$($lt,)? V: $trait$(<$lt>)?>(
571595
vis: &mut V,
572596
generics: ref_t!(Generics)
@@ -1319,26 +1343,6 @@ pub mod visit {
13191343
}
13201344
}
13211345

1322-
pub fn walk_generic_param<'a, V: Visitor<'a>>(
1323-
visitor: &mut V,
1324-
param: &'a GenericParam,
1325-
) -> V::Result {
1326-
let GenericParam { id: _, ident, attrs, bounds, is_placeholder: _, kind, colon_span: _ } =
1327-
param;
1328-
walk_list!(visitor, visit_attribute, attrs);
1329-
try_visit!(visitor.visit_ident(ident));
1330-
walk_list!(visitor, visit_param_bound, bounds, BoundKind::Bound);
1331-
match kind {
1332-
GenericParamKind::Lifetime => (),
1333-
GenericParamKind::Type { default } => visit_opt!(visitor, visit_ty, default),
1334-
GenericParamKind::Const { ty, default, kw_span: _ } => {
1335-
try_visit!(visitor.visit_ty(ty));
1336-
visit_opt!(visitor, visit_anon_const, default);
1337-
}
1338-
}
1339-
V::Result::output()
1340-
}
1341-
13421346
pub fn walk_fn<'a, V: Visitor<'a>>(visitor: &mut V, kind: FnKind<'a>) -> V::Result {
13431347
match kind {
13441348
FnKind::Fn(_ctxt, _ident, FnSig { header, decl, span: _ }, _vis, generics, body) => {
@@ -2140,25 +2144,7 @@ pub mod mut_visit {
21402144
vis: &mut T,
21412145
mut param: GenericParam,
21422146
) -> SmallVec<[GenericParam; 1]> {
2143-
let GenericParam { id, ident, attrs, bounds, kind, colon_span, is_placeholder: _ } =
2144-
&mut param;
2145-
vis.visit_id(id);
2146-
visit_attrs(vis, attrs);
2147-
vis.visit_ident(ident);
2148-
visit_vec(bounds, |bound| vis.visit_param_bound(bound, BoundKind::Bound));
2149-
match kind {
2150-
GenericParamKind::Lifetime => {}
2151-
GenericParamKind::Type { default } => {
2152-
visit_opt(default, |default| vis.visit_ty(default));
2153-
}
2154-
GenericParamKind::Const { ty, kw_span: _, default } => {
2155-
vis.visit_ty(ty);
2156-
visit_opt(default, |default| vis.visit_anon_const(default));
2157-
}
2158-
}
2159-
if let Some(colon_span) = colon_span {
2160-
vis.visit_span(colon_span);
2161-
}
2147+
vis.visit_generic_param(&mut param);
21622148
smallvec![param]
21632149
}
21642150

0 commit comments

Comments
 (0)