Skip to content

Commit ae8e07b

Browse files
committed
Unify walk_generic_param
1 parent 2df457e commit ae8e07b

File tree

1 file changed

+24
-41
lines changed

1 file changed

+24
-41
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 24 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,6 +1212,30 @@ macro_rules! make_ast_visitor {
12121212
return_result!(V)
12131213
}
12141214

1215+
pub fn walk_generic_param<$($lt,)? V: $trait$(<$lt>)?>(
1216+
vis: &mut V,
1217+
param: ref_t!(GenericParam)
1218+
) -> result!(V) {
1219+
let GenericParam { id, ident, attrs, bounds, kind, colon_span, is_placeholder: _ } = param;
1220+
try_v!(visit_id!(vis, id));
1221+
visit_list!(vis, visit_attribute, flat_map_attribute, attrs);
1222+
try_v!(visit_ident!(vis, ident));
1223+
visit_list!(vis, visit_param_bound, bounds; BoundKind::Bound);
1224+
match kind {
1225+
GenericParamKind::Lifetime => {}
1226+
GenericParamKind::Type { default } => {
1227+
visit_o!(default, |default| vis.visit_ty(default));
1228+
}
1229+
GenericParamKind::Const { ty, kw_span, default } => {
1230+
try_v!(vis.visit_ty(ty));
1231+
visit_o!(default, |default| vis.visit_anon_const(default));
1232+
try_v!(visit_span!(vis, kw_span));
1233+
}
1234+
}
1235+
visit_o!(colon_span, |span| visit_span!(vis, span));
1236+
return_result!(V)
1237+
}
1238+
12151239
derive_copy_clone!{
12161240
#[derive(Debug)]
12171241
pub enum FnKind<'a> {
@@ -1556,26 +1580,6 @@ pub mod visit {
15561580
V::Result::output()
15571581
}
15581582

1559-
pub fn walk_generic_param<'a, V: Visitor<'a>>(
1560-
visitor: &mut V,
1561-
param: &'a GenericParam,
1562-
) -> V::Result {
1563-
let GenericParam { id: _, ident, attrs, bounds, is_placeholder: _, kind, colon_span: _ } =
1564-
param;
1565-
walk_list!(visitor, visit_attribute, attrs);
1566-
try_visit!(visitor.visit_ident(*ident));
1567-
walk_list!(visitor, visit_param_bound, bounds, BoundKind::Bound);
1568-
match kind {
1569-
GenericParamKind::Lifetime => (),
1570-
GenericParamKind::Type { default } => visit_opt!(visitor, visit_ty, default),
1571-
GenericParamKind::Const { ty, default, kw_span: _ } => {
1572-
try_visit!(visitor.visit_ty(ty));
1573-
visit_opt!(visitor, visit_anon_const, default);
1574-
}
1575-
}
1576-
V::Result::output()
1577-
}
1578-
15791583
pub fn walk_where_predicate<'a, V: Visitor<'a>>(
15801584
visitor: &mut V,
15811585
predicate: &'a WherePredicate,
@@ -2290,27 +2294,6 @@ pub mod mut_visit {
22902294
}
22912295
}
22922296

2293-
pub fn walk_generic_param<T: MutVisitor>(vis: &mut T, param: &mut GenericParam) {
2294-
let GenericParam { id, ident, attrs, bounds, kind, colon_span, is_placeholder: _ } = param;
2295-
vis.visit_id(id);
2296-
visit_attrs(vis, attrs);
2297-
vis.visit_ident(ident);
2298-
visit_vec(bounds, |bound| vis.visit_param_bound(bound, BoundKind::Bound));
2299-
match kind {
2300-
GenericParamKind::Lifetime => {}
2301-
GenericParamKind::Type { default } => {
2302-
visit_opt(default, |default| vis.visit_ty(default));
2303-
}
2304-
GenericParamKind::Const { ty, kw_span: _, default } => {
2305-
vis.visit_ty(ty);
2306-
visit_opt(default, |default| vis.visit_anon_const(default));
2307-
}
2308-
}
2309-
if let Some(colon_span) = colon_span {
2310-
vis.visit_span(colon_span);
2311-
}
2312-
}
2313-
23142297
fn walk_ty_alias_where_clauses<T: MutVisitor>(vis: &mut T, tawcs: &mut TyAliasWhereClauses) {
23152298
let TyAliasWhereClauses { before, after, split: _ } = tawcs;
23162299
let TyAliasWhereClause { has_where_token: _, span: span_before } = before;

0 commit comments

Comments
 (0)