Skip to content

Commit 919981f

Browse files
committed
Unify {visit,walk}_variant
1 parent cef719f commit 919981f

File tree

1 file changed

+17
-24
lines changed

1 file changed

+17
-24
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,6 @@ macro_rules! make_ast_visitor {
281281
make_visit!{Path, _ id: NodeId; visit_path, walk_path}
282282
make_visit!{Stmt; visit_stmt, walk_stmt}
283283
make_visit!{UseTree, id: NodeId, _ nested: bool; visit_use_tree, walk_use_tree}
284-
make_visit!{Variant; visit_variant, walk_variant}
285284

286285
/// This method is a hack to workaround unstable of `stmt_expr_attributes`.
287286
/// It can be removed once that feature is stabilized.
@@ -336,6 +335,7 @@ macro_rules! make_ast_visitor {
336335
make_visit!{PathSegment; visit_path_segment, walk_path_segment}
337336
make_visit!{PolyTraitRef; visit_poly_trait_ref, walk_poly_trait_ref}
338337
make_visit!{TraitRef; visit_trait_ref, walk_trait_ref}
338+
make_visit!{Variant; visit_variant, walk_variant}
339339
make_visit!{VariantData; visit_variant_data, walk_variant_data}
340340
make_visit!{Visibility; visit_vis, walk_vis}
341341
make_visit!{WhereClause; visit_where_clause, walk_where_clause}
@@ -601,6 +601,21 @@ macro_rules! make_ast_visitor {
601601
return_result!(V)
602602
}
603603

604+
pub fn walk_variant<$($lt,)? V: $trait$(<$lt>)?>(
605+
visitor: &mut V,
606+
variant: ref_t!(Variant)
607+
) -> result!(V) {
608+
let Variant { ident, vis, attrs, id, data, disr_expr, span, is_placeholder: _ } = variant;
609+
try_v!(visit_id!(visitor, id));
610+
visit_list!(visitor, visit_attribute, attrs);
611+
try_v!(visitor.visit_vis(vis));
612+
try_v!(visitor.visit_ident(ident));
613+
try_v!(visitor.visit_variant_data(data));
614+
visit_o!(disr_expr, |disr_expr| visitor.visit_variant_discr(disr_expr));
615+
try_v!(visit_span!(visitor, span));
616+
return_result!(V)
617+
}
618+
604619
pub fn walk_variant_data<$($lt,)? V: $trait$(<$lt>)?>(
605620
vis: &mut V,
606621
vdata: ref_t!(VariantData)
@@ -928,20 +943,6 @@ pub mod visit {
928943
walk_assoc_item(visitor, item, AssocCtxt::Trait /*ignored*/)
929944
}
930945

931-
pub fn walk_variant<'a, V: Visitor<'a>>(visitor: &mut V, variant: &'a Variant) -> V::Result
932-
where
933-
V: Visitor<'a>,
934-
{
935-
let Variant { attrs, id: _, span: _, vis, ident, data, disr_expr, is_placeholder: _ } =
936-
variant;
937-
walk_list!(visitor, visit_attribute, attrs);
938-
try_visit!(visitor.visit_vis(vis));
939-
try_visit!(visitor.visit_ident(ident));
940-
try_visit!(visitor.visit_variant_data(data));
941-
visit_opt!(visitor, visit_variant_discr, disr_expr);
942-
V::Result::output()
943-
}
944-
945946
pub fn walk_ty<'a, V: Visitor<'a>>(visitor: &mut V, typ: &'a Ty) -> V::Result {
946947
let Ty { id, kind, span: _, tokens: _ } = typ;
947948
match kind {
@@ -1803,15 +1804,7 @@ pub mod mut_visit {
18031804
visitor: &mut T,
18041805
mut variant: Variant,
18051806
) -> SmallVec<[Variant; 1]> {
1806-
let Variant { ident, vis, attrs, id, data, disr_expr, span, is_placeholder: _ } =
1807-
&mut variant;
1808-
visitor.visit_id(id);
1809-
visit_attrs(visitor, attrs);
1810-
visitor.visit_vis(vis);
1811-
visitor.visit_ident(ident);
1812-
visitor.visit_variant_data(data);
1813-
visit_opt(disr_expr, |disr_expr| visitor.visit_anon_const(disr_expr));
1814-
visitor.visit_span(span);
1807+
visitor.visit_variant(&mut variant);
18151808
smallvec![variant]
18161809
}
18171810

0 commit comments

Comments
 (0)