@@ -281,7 +281,6 @@ macro_rules! make_ast_visitor {
281
281
make_visit!{ Path , _ id: NodeId ; visit_path, walk_path}
282
282
make_visit!{ Stmt ; visit_stmt, walk_stmt}
283
283
make_visit!{ UseTree , id: NodeId , _ nested: bool ; visit_use_tree, walk_use_tree}
284
- make_visit!{ Variant ; visit_variant, walk_variant}
285
284
286
285
/// This method is a hack to workaround unstable of `stmt_expr_attributes`.
287
286
/// It can be removed once that feature is stabilized.
@@ -336,6 +335,7 @@ macro_rules! make_ast_visitor {
336
335
make_visit!{ PathSegment ; visit_path_segment, walk_path_segment}
337
336
make_visit!{ PolyTraitRef ; visit_poly_trait_ref, walk_poly_trait_ref}
338
337
make_visit!{ TraitRef ; visit_trait_ref, walk_trait_ref}
338
+ make_visit!{ Variant ; visit_variant, walk_variant}
339
339
make_visit!{ VariantData ; visit_variant_data, walk_variant_data}
340
340
make_visit!{ Visibility ; visit_vis, walk_vis}
341
341
make_visit!{ WhereClause ; visit_where_clause, walk_where_clause}
@@ -601,6 +601,21 @@ macro_rules! make_ast_visitor {
601
601
return_result!( V )
602
602
}
603
603
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
+
604
619
pub fn walk_variant_data<$( $lt, ) ? V : $trait$( <$lt>) ?>(
605
620
vis: & mut V ,
606
621
vdata: ref_t!( VariantData )
@@ -928,20 +943,6 @@ pub mod visit {
928
943
walk_assoc_item ( visitor, item, AssocCtxt :: Trait /*ignored*/ )
929
944
}
930
945
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
-
945
946
pub fn walk_ty < ' a , V : Visitor < ' a > > ( visitor : & mut V , typ : & ' a Ty ) -> V :: Result {
946
947
let Ty { id, kind, span : _, tokens : _ } = typ;
947
948
match kind {
@@ -1803,15 +1804,7 @@ pub mod mut_visit {
1803
1804
visitor : & mut T ,
1804
1805
mut variant : Variant ,
1805
1806
) -> 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) ;
1815
1808
smallvec ! [ variant]
1816
1809
}
1817
1810
0 commit comments