Skip to content

Commit d63ca48

Browse files
committed
Unify {visit,walk}_generic_param
1 parent 697e179 commit d63ca48

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
@@ -289,7 +289,6 @@ macro_rules! make_ast_visitor {
289289

290290
make_visit!{AssocItem, ctxt: AssocCtxt; visit_assoc_item, walk_assoc_item}
291291
make_visit!{ForeignItem; visit_foreign_item, walk_item}
292-
make_visit!{GenericParam; visit_generic_param, walk_generic_param}
293292
make_visit!{Item; visit_item, walk_item}
294293
make_visit!{Stmt; visit_stmt, walk_stmt}
295294

@@ -330,6 +329,7 @@ macro_rules! make_ast_visitor {
330329
make_visit!{GenericArg; visit_generic_arg, walk_generic_arg}
331330
make_visit!{GenericArgs; visit_generic_args, walk_generic_args}
332331
make_visit!{GenericBound, _ ctxt: BoundKind; visit_param_bound, walk_param_bound}
332+
make_visit!{GenericParam; visit_generic_param, walk_generic_param}
333333
make_visit!{Generics; visit_generics, walk_generics}
334334
make_visit!{Ident; visit_ident, walk_ident}
335335
make_visit!{InlineAsm; visit_inline_asm, walk_inline_asm}
@@ -573,6 +573,30 @@ macro_rules! make_ast_visitor {
573573
return_result!(V)
574574
}
575575

576+
pub fn walk_generic_param<$($lt,)? V: $trait$(<$lt>)?>(
577+
vis: &mut V,
578+
param: ref_t!(GenericParam)
579+
) -> result!(V) {
580+
let GenericParam { id, ident, attrs, bounds, kind, colon_span, is_placeholder: _ } = param;
581+
try_v!(visit_id!(vis, id));
582+
visit_list!(vis, visit_attribute, attrs);
583+
try_v!(vis.visit_ident(ident));
584+
visit_list!(vis, visit_param_bound, bounds; BoundKind::Bound);
585+
match kind {
586+
GenericParamKind::Lifetime => {}
587+
GenericParamKind::Type { default } => {
588+
visit_o!(default, |default| vis.visit_ty(default));
589+
}
590+
GenericParamKind::Const { ty, kw_span, default } => {
591+
try_v!(vis.visit_ty(ty));
592+
visit_o!(default, |default| vis.visit_anon_const(default));
593+
try_v!(visit_span!(vis, kw_span));
594+
}
595+
}
596+
visit_o!(colon_span, |span| visit_span!(vis, span));
597+
return_result!(V)
598+
}
599+
576600
pub fn walk_generics<$($lt,)? V: $trait$(<$lt>)?>(
577601
vis: &mut V,
578602
generics: ref_t!(Generics)
@@ -1325,26 +1349,6 @@ pub mod visit {
13251349
}
13261350
}
13271351

1328-
pub fn walk_generic_param<'a, V: Visitor<'a>>(
1329-
visitor: &mut V,
1330-
param: &'a GenericParam,
1331-
) -> V::Result {
1332-
let GenericParam { id: _, ident, attrs, bounds, is_placeholder: _, kind, colon_span: _ } =
1333-
param;
1334-
walk_list!(visitor, visit_attribute, attrs);
1335-
try_visit!(visitor.visit_ident(ident));
1336-
walk_list!(visitor, visit_param_bound, bounds, BoundKind::Bound);
1337-
match kind {
1338-
GenericParamKind::Lifetime => (),
1339-
GenericParamKind::Type { default } => visit_opt!(visitor, visit_ty, default),
1340-
GenericParamKind::Const { ty, default, kw_span: _ } => {
1341-
try_visit!(visitor.visit_ty(ty));
1342-
visit_opt!(visitor, visit_anon_const, default);
1343-
}
1344-
}
1345-
V::Result::output()
1346-
}
1347-
13481352
pub fn walk_fn<'a, V: Visitor<'a>>(visitor: &mut V, kind: FnKind<'a>) -> V::Result {
13491353
match kind {
13501354
FnKind::Fn(_ctxt, _ident, FnSig { header, decl, span: _ }, _vis, generics, body) => {
@@ -2146,25 +2150,7 @@ pub mod mut_visit {
21462150
vis: &mut T,
21472151
mut param: GenericParam,
21482152
) -> SmallVec<[GenericParam; 1]> {
2149-
let GenericParam { id, ident, attrs, bounds, kind, colon_span, is_placeholder: _ } =
2150-
&mut param;
2151-
vis.visit_id(id);
2152-
visit_attrs(vis, attrs);
2153-
vis.visit_ident(ident);
2154-
visit_vec(bounds, |bound| vis.visit_param_bound(bound, BoundKind::Bound));
2155-
match kind {
2156-
GenericParamKind::Lifetime => {}
2157-
GenericParamKind::Type { default } => {
2158-
visit_opt(default, |default| vis.visit_ty(default));
2159-
}
2160-
GenericParamKind::Const { ty, kw_span: _, default } => {
2161-
vis.visit_ty(ty);
2162-
visit_opt(default, |default| vis.visit_anon_const(default));
2163-
}
2164-
}
2165-
if let Some(colon_span) = colon_span {
2166-
vis.visit_span(colon_span);
2167-
}
2153+
vis.visit_generic_param(&mut param);
21682154
smallvec![param]
21692155
}
21702156

0 commit comments

Comments
 (0)