Skip to content

Commit 243b669

Browse files
committed
Unify walk_generic_param
1 parent 69f44ff commit 243b669

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
@@ -1204,6 +1204,30 @@ macro_rules! make_ast_visitor {
12041204
return_result!(V)
12051205
}
12061206

1207+
pub fn walk_generic_param<$($lt,)? V: $trait$(<$lt>)?>(
1208+
vis: &mut V,
1209+
param: ref_t!(GenericParam)
1210+
) -> result!(V) {
1211+
let GenericParam { id, ident, attrs, bounds, kind, colon_span, is_placeholder: _ } = param;
1212+
try_v!(visit_id!(vis, id));
1213+
visit_list!(vis, visit_attribute, flat_map_attribute, attrs);
1214+
try_v!(visit_ident!(vis, ident));
1215+
visit_list!(vis, visit_param_bound, bounds; BoundKind::Bound);
1216+
match kind {
1217+
GenericParamKind::Lifetime => {}
1218+
GenericParamKind::Type { default } => {
1219+
visit_o!(default, |default| vis.visit_ty(default));
1220+
}
1221+
GenericParamKind::Const { ty, kw_span, default } => {
1222+
try_v!(vis.visit_ty(ty));
1223+
visit_o!(default, |default| vis.visit_anon_const(default));
1224+
try_v!(visit_span!(vis, kw_span));
1225+
}
1226+
}
1227+
visit_o!(colon_span, |span| visit_span!(vis, span));
1228+
return_result!(V)
1229+
}
1230+
12071231
derive_copy_clone!{
12081232
#[derive(Debug)]
12091233
pub enum FnKind<'a> {
@@ -1558,26 +1582,6 @@ pub mod visit {
15581582
V::Result::output()
15591583
}
15601584

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

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

0 commit comments

Comments
 (0)