@@ -344,6 +344,7 @@ macro_rules! make_ast_visitor {
344
344
self . visit_expr( ex)
345
345
}
346
346
347
+ /// Id should be visited by the caller
347
348
fn visit_use_tree(
348
349
& mut self ,
349
350
use_tree: ref_t!( UseTree ) ,
@@ -835,6 +836,31 @@ macro_rules! make_ast_visitor {
835
836
return_result!( V )
836
837
}
837
838
839
+ pub fn walk_use_tree<$( $lt, ) ? V : $trait$( <$lt>) ?>(
840
+ vis: & mut V ,
841
+ use_tree: ref_t!( UseTree ) ,
842
+ id: NodeId ,
843
+ ) -> result!( V ) {
844
+ let UseTree { prefix, kind, span } = use_tree;
845
+ try_v!( vis. visit_path( prefix, id) ) ;
846
+ match kind {
847
+ UseTreeKind :: Simple ( rename) => {
848
+ // The extra IDs are handled during AST lowering.
849
+ visit_o!( rename, |rename: ref_t!( Ident ) | visit_ident!( vis, rename) ) ;
850
+ }
851
+ UseTreeKind :: Nested { items, span } => {
852
+ for ( tree, id) in items {
853
+ try_v!( visit_id!( vis, id) ) ;
854
+ vis. visit_use_tree( tree, * id, true ) ;
855
+ }
856
+ try_v!( visit_span!( vis, span) ) ;
857
+ }
858
+ UseTreeKind :: Glob => { }
859
+ }
860
+ try_v!( visit_span!( vis, span) ) ;
861
+ return_result!( V )
862
+ }
863
+
838
864
make_walk_flat_map!{ Arm , walk_flat_map_arm, visit_arm}
839
865
make_walk_flat_map!{ Attribute , walk_flat_map_attribute, visit_attribute}
840
866
make_walk_flat_map!{ ExprField , walk_flat_map_expr_field, visit_expr_field}
@@ -1155,28 +1181,6 @@ pub mod visit {
1155
1181
V :: Result :: output ( )
1156
1182
}
1157
1183
1158
- pub fn walk_use_tree < ' a , V : Visitor < ' a > > (
1159
- visitor : & mut V ,
1160
- use_tree : & ' a UseTree ,
1161
- id : NodeId ,
1162
- ) -> V :: Result {
1163
- let UseTree { prefix, kind, span : _ } = use_tree;
1164
- try_visit ! ( visitor. visit_path( prefix, id) ) ;
1165
- match kind {
1166
- UseTreeKind :: Simple ( rename) => {
1167
- // The extra IDs are handled during AST lowering.
1168
- visit_opt ! ( visitor, visit_ident, * rename) ;
1169
- }
1170
- UseTreeKind :: Glob => { }
1171
- UseTreeKind :: Nested { ref items, span : _ } => {
1172
- for & ( ref nested_tree, nested_id) in items {
1173
- try_visit ! ( visitor. visit_use_tree( nested_tree, nested_id, true ) ) ;
1174
- }
1175
- }
1176
- }
1177
- V :: Result :: output ( )
1178
- }
1179
-
1180
1184
pub fn walk_generic_arg < ' a , V > ( visitor : & mut V , generic_arg : & ' a GenericArg ) -> V :: Result
1181
1185
where
1182
1186
V : Visitor < ' a > ,
@@ -1846,23 +1850,6 @@ pub mod mut_visit {
1846
1850
vis. visit_span ( close) ;
1847
1851
}
1848
1852
1849
- fn walk_use_tree < T : MutVisitor > ( vis : & mut T , use_tree : & mut UseTree , id : NodeId ) {
1850
- let UseTree { prefix, kind, span } = use_tree;
1851
- vis. visit_path ( prefix, id) ;
1852
- match kind {
1853
- UseTreeKind :: Simple ( rename) => visit_opt ( rename, |rename| vis. visit_ident ( rename) ) ,
1854
- UseTreeKind :: Nested { items, span } => {
1855
- for ( tree, id) in items {
1856
- vis. visit_id ( id) ;
1857
- vis. visit_use_tree ( tree, * id, true ) ;
1858
- }
1859
- vis. visit_span ( span) ;
1860
- }
1861
- UseTreeKind :: Glob => { }
1862
- }
1863
- vis. visit_span ( span) ;
1864
- }
1865
-
1866
1853
fn walk_assoc_item_constraint < T : MutVisitor > (
1867
1854
vis : & mut T ,
1868
1855
AssocItemConstraint { id, ident, gen_args, kind, span } : & mut AssocItemConstraint ,
0 commit comments