Skip to content

Commit 2a5f7a2

Browse files
committed
Unify walk_crate
1 parent 7666241 commit 2a5f7a2

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,6 @@ macro_rules! make_ast_visitor {
288288
make_visit!{GenericArgs, visit_generic_args, walk_generic_args}
289289
make_visit!{GenericArg, visit_generic_arg, walk_generic_arg}
290290
make_visit!{AssocItemConstraint, visit_assoc_item_constraint, walk_assoc_item_constraint}
291-
make_visit!{Attribute, visit_attribute, walk_attribute}
292291
make_visit!{Visibility, visit_vis, walk_vis}
293292
make_visit!{FnRetTy, visit_fn_ret_ty, walk_fn_ret_ty}
294293
make_visit!{AngleBracketedArgs, visit_angle_bracketed_parameter_data, walk_angle_bracketed_parameter_data}
@@ -307,6 +306,7 @@ macro_rules! make_ast_visitor {
307306

308307
// flat_maps
309308
make_visit!{Arm, visit_arm, walk_arm, flat_map_arm, walk_flat_map_arm}
309+
make_visit!{Attribute, visit_attribute, walk_attribute, flat_map_attribute, walk_flat_map_attribute}
310310
make_visit!{ExprField, visit_expr_field, walk_expr_field, flat_map_expr_field, walk_flat_map_expr_field}
311311
make_visit!{GenericParam, visit_generic_param, walk_generic_param, flat_map_generic_param, walk_flat_map_generic_param}
312312
make_visit!{FieldDef, visit_field_def, walk_field_def, flat_map_field_def, walk_flat_map_field_def}
@@ -605,7 +605,22 @@ macro_rules! make_ast_visitor {
605605
return_result!(V)
606606
}
607607

608+
pub fn walk_crate<$($lt,)? V: $trait$(<$lt>)?>(
609+
vis: &mut V,
610+
krate: ref_t!(Crate)
611+
) -> result!(V) {
612+
let Crate { attrs, items, spans, id, is_placeholder: _ } = krate;
613+
try_v!(visit_id!(vis, id));
614+
visit_list!(vis, visit_attribute, flat_map_attribute, attrs);
615+
visit_list!(vis, visit_item, flat_map_item, items);
616+
let ModSpans { inner_span, inject_use_span } = spans;
617+
try_v!(visit_span!(vis, inner_span));
618+
try_v!(visit_span!(vis, inject_use_span));
619+
return_result!(V)
620+
}
621+
608622
make_walk_flat_map!{Arm, walk_flat_map_arm, visit_arm}
623+
make_walk_flat_map!{Attribute, walk_flat_map_attribute, visit_attribute}
609624
make_walk_flat_map!{ExprField, walk_flat_map_expr_field, visit_expr_field}
610625
make_walk_flat_map!{FieldDef, walk_flat_map_field_def, visit_field_def}
611626
make_walk_flat_map!{GenericParam, walk_flat_map_generic_param, visit_generic_param}
@@ -741,13 +756,6 @@ pub mod visit {
741756

742757
make_ast_visitor!(Visitor<'ast>);
743758

744-
pub fn walk_crate<'a, V: Visitor<'a>>(visitor: &mut V, krate: &'a Crate) -> V::Result {
745-
let Crate { attrs, items, spans: _, id: _, is_placeholder: _ } = krate;
746-
walk_list!(visitor, visit_attribute, attrs);
747-
walk_list!(visitor, visit_item, items);
748-
V::Result::output()
749-
}
750-
751759
pub fn walk_local<'a, V: Visitor<'a>>(visitor: &mut V, local: &'a Local) -> V::Result {
752760
let Local { id: _, pat, ty, kind, span: _, colon_sp: _, attrs, tokens: _ } = local;
753761
walk_list!(visitor, visit_attribute, attrs);
@@ -2554,16 +2562,6 @@ pub mod mut_visit {
25542562
visit_safety(vis, safety);
25552563
}
25562564

2557-
pub fn walk_crate<T: MutVisitor>(vis: &mut T, krate: &mut Crate) {
2558-
let Crate { attrs, items, spans, id, is_placeholder: _ } = krate;
2559-
vis.visit_id(id);
2560-
visit_attrs(vis, attrs);
2561-
items.flat_map_in_place(|item| vis.flat_map_item(item));
2562-
let ModSpans { inner_span, inject_use_span } = spans;
2563-
vis.visit_span(inner_span);
2564-
vis.visit_span(inject_use_span);
2565-
}
2566-
25672565
/// Mutates one item, returning the item again.
25682566
pub fn walk_flat_map_item<K: WalkItemKind>(
25692567
visitor: &mut impl MutVisitor,

0 commit comments

Comments
 (0)