@@ -211,7 +211,6 @@ macro_rules! make_ast_visitor {
211
211
make_visit!{ MacroDef ; visit_macro_def, walk_macro_def}
212
212
make_visit!{ MetaItem ; visit_meta_item, walk_meta_item}
213
213
make_visit!{ MetaItemInner ; visit_meta_list_item, walk_meta_list_item}
214
- make_visit!{ Path ; visit_path, walk_path}
215
214
make_visit!{ PreciseCapturingArg ; visit_precise_capturing_arg, walk_precise_capturing_arg}
216
215
217
216
fn flat_map_foreign_item( & mut self , ni: P <ForeignItem >) -> SmallVec <[ P <ForeignItem >; 1 ] > {
@@ -293,7 +292,6 @@ macro_rules! make_ast_visitor {
293
292
make_visit!{ ForeignItem ; visit_foreign_item, walk_item}
294
293
make_visit!{ GenericParam ; visit_generic_param, walk_generic_param}
295
294
make_visit!{ Item ; visit_item, walk_item}
296
- make_visit!{ Path , _ id: NodeId ; visit_path, walk_path}
297
295
make_visit!{ Stmt ; visit_stmt, walk_stmt}
298
296
299
297
/// This method is a hack to workaround unstable of `stmt_expr_attributes`.
@@ -348,6 +346,7 @@ macro_rules! make_ast_visitor {
348
346
make_visit!{ Param ; visit_param, walk_param}
349
347
make_visit!{ ParenthesizedArgs ; visit_parenthesized_parameter_data, walk_parenthesized_parameter_data}
350
348
make_visit!{ PatField ; visit_pat_field, walk_pat_field}
349
+ make_visit!{ Path , _ id: NodeId ; visit_path, walk_path}
351
350
make_visit!{ PathSegment ; visit_path_segment, walk_path_segment}
352
351
make_visit!{ PolyTraitRef ; visit_poly_trait_ref, walk_poly_trait_ref}
353
352
make_visit!{ TraitRef ; visit_trait_ref, walk_trait_ref}
@@ -698,6 +697,17 @@ macro_rules! make_ast_visitor {
698
697
return_result!( V )
699
698
}
700
699
700
+ pub fn walk_path<$( $lt, ) ? V : $trait$( <$lt>) ?>(
701
+ vis: & mut V ,
702
+ path: ref_t!( Path )
703
+ ) -> result!( V ) {
704
+ let Path { span, segments, tokens } = path;
705
+ visit_list!( vis, visit_path_segment, segments) ;
706
+ visit_lazy_tts!( vis, tokens) ;
707
+ try_v!( visit_span!( vis, span) ) ;
708
+ return_result!( V )
709
+ }
710
+
701
711
pub fn walk_path_segment<$( $lt, ) ? V : $trait$( <$lt>) ?>(
702
712
vis: & mut V ,
703
713
segment: ref_t!( PathSegment )
@@ -726,13 +736,7 @@ macro_rules! make_ast_visitor {
726
736
id: NodeId ,
727
737
) -> result!( V ) {
728
738
let UseTree { prefix, kind, span } = use_tree;
729
- // TODO: Remove this after unifying visit_path
730
- try_v!( macro_if!{ $( $mut) ? { {
731
- let _ = id;
732
- vis. visit_path( prefix)
733
- } } else {
734
- vis. visit_path( prefix, id)
735
- } } ) ;
739
+ try_v!( vis. visit_path( prefix, id) ) ;
736
740
match kind {
737
741
UseTreeKind :: Simple ( rename) => {
738
742
// The extra IDs are handled during AST lowering.
@@ -1126,12 +1130,6 @@ pub mod visit {
1126
1130
V :: Result :: output ( )
1127
1131
}
1128
1132
1129
- pub fn walk_path < ' a , V : Visitor < ' a > > ( visitor : & mut V , path : & ' a Path ) -> V :: Result {
1130
- let Path { span : _, segments, tokens : _ } = path;
1131
- walk_list ! ( visitor, visit_path_segment, segments) ;
1132
- V :: Result :: output ( )
1133
- }
1134
-
1135
1133
pub fn walk_generic_arg < ' a , V > ( visitor : & mut V , generic_arg : & ' a GenericArg ) -> V :: Result
1136
1134
where
1137
1135
V : Visitor < ' a > ,
@@ -1814,7 +1812,7 @@ pub mod mut_visit {
1814
1812
}
1815
1813
TyKind :: Path ( qself, path) => {
1816
1814
vis. visit_qself ( qself) ;
1817
- vis. visit_path ( path) ;
1815
+ vis. visit_path ( path, * id ) ;
1818
1816
}
1819
1817
TyKind :: Array ( ty, length) => {
1820
1818
vis. visit_ty ( ty) ;
@@ -1848,14 +1846,6 @@ pub mod mut_visit {
1848
1846
smallvec ! [ variant]
1849
1847
}
1850
1848
1851
- fn walk_path < T : MutVisitor > ( vis : & mut T , Path { segments, span, tokens } : & mut Path ) {
1852
- for segment in segments {
1853
- vis. visit_path_segment ( segment) ;
1854
- }
1855
- visit_lazy_tts ( vis, tokens) ;
1856
- vis. visit_span ( span) ;
1857
- }
1858
-
1859
1849
fn walk_generic_arg < T : MutVisitor > ( vis : & mut T , arg : & mut GenericArg ) {
1860
1850
match arg {
1861
1851
GenericArg :: Lifetime ( lt) => vis. visit_lifetime ( lt, LifetimeCtxt :: GenericArg ) ,
@@ -1872,7 +1862,7 @@ pub mod mut_visit {
1872
1862
item : AttrItem { unsafety : _, path, args, tokens } ,
1873
1863
tokens : attr_tokens,
1874
1864
} = & mut * * normal;
1875
- vis. visit_path ( path) ;
1865
+ vis. visit_path ( path, DUMMY_NODE_ID ) ;
1876
1866
visit_attr_args ( vis, args) ;
1877
1867
visit_lazy_tts ( vis, tokens) ;
1878
1868
visit_lazy_tts ( vis, attr_tokens) ;
@@ -1884,7 +1874,7 @@ pub mod mut_visit {
1884
1874
1885
1875
fn walk_mac < T : MutVisitor > ( vis : & mut T , mac : & mut MacCall ) {
1886
1876
let MacCall { path, args } = mac;
1887
- vis. visit_path ( path) ;
1877
+ vis. visit_path ( path, DUMMY_NODE_ID ) ;
1888
1878
visit_delim_args ( vis, args) ;
1889
1879
}
1890
1880
@@ -2055,11 +2045,11 @@ pub mod mut_visit {
2055
2045
token:: NtLiteral ( expr) => vis. visit_expr ( expr) ,
2056
2046
token:: NtMeta ( item) => {
2057
2047
let AttrItem { unsafety : _, path, args, tokens } = item. deref_mut ( ) ;
2058
- vis. visit_path ( path) ;
2048
+ vis. visit_path ( path, DUMMY_NODE_ID ) ;
2059
2049
visit_attr_args ( vis, args) ;
2060
2050
visit_lazy_tts ( vis, tokens) ;
2061
2051
}
2062
- token:: NtPath ( path) => vis. visit_path ( path) ,
2052
+ token:: NtPath ( path) => vis. visit_path ( path, DUMMY_NODE_ID ) ,
2063
2053
token:: NtVis ( visib) => vis. visit_vis ( visib) ,
2064
2054
}
2065
2055
}
@@ -2149,7 +2139,7 @@ pub mod mut_visit {
2149
2139
}
2150
2140
PreciseCapturingArg :: Arg ( path, id) => {
2151
2141
vis. visit_id ( id) ;
2152
- vis. visit_path ( path) ;
2142
+ vis. visit_path ( path, * id ) ;
2153
2143
}
2154
2144
}
2155
2145
}
@@ -2190,7 +2180,7 @@ pub mod mut_visit {
2190
2180
2191
2181
fn walk_trait_ref < T : MutVisitor > ( vis : & mut T , TraitRef { path, ref_id } : & mut TraitRef ) {
2192
2182
vis. visit_id ( ref_id) ;
2193
- vis. visit_path ( path) ;
2183
+ vis. visit_path ( path, * ref_id ) ;
2194
2184
}
2195
2185
2196
2186
pub fn walk_flat_map_field_def < T : MutVisitor > (
@@ -2323,7 +2313,7 @@ pub mod mut_visit {
2323
2313
} ) => {
2324
2314
vis. visit_id ( id) ;
2325
2315
vis. visit_qself ( qself) ;
2326
- vis. visit_path ( path) ;
2316
+ vis. visit_path ( path, * id ) ;
2327
2317
if let Some ( rename) = rename {
2328
2318
vis. visit_ident ( rename) ;
2329
2319
}
@@ -2333,7 +2323,7 @@ pub mod mut_visit {
2333
2323
}
2334
2324
ItemKind :: DelegationMac ( box DelegationMac { qself, prefix, suffixes, body } ) => {
2335
2325
vis. visit_qself ( qself) ;
2336
- vis. visit_path ( prefix) ;
2326
+ vis. visit_path ( prefix, id ) ;
2337
2327
if let Some ( suffixes) = suffixes {
2338
2328
for ( ident, rename) in suffixes {
2339
2329
vis. visit_ident ( ident) ;
@@ -2384,7 +2374,7 @@ pub mod mut_visit {
2384
2374
} ) => {
2385
2375
visitor. visit_id ( id) ;
2386
2376
visitor. visit_qself ( qself) ;
2387
- visitor. visit_path ( path) ;
2377
+ visitor. visit_path ( path, * id ) ;
2388
2378
if let Some ( rename) = rename {
2389
2379
visitor. visit_ident ( rename) ;
2390
2380
}
@@ -2399,7 +2389,7 @@ pub mod mut_visit {
2399
2389
body,
2400
2390
} ) => {
2401
2391
visitor. visit_qself ( qself) ;
2402
- visitor. visit_path ( prefix) ;
2392
+ visitor. visit_path ( prefix, id ) ;
2403
2393
if let Some ( suffixes) = suffixes {
2404
2394
for ( ident, rename) in suffixes {
2405
2395
visitor. visit_ident ( ident) ;
@@ -2501,16 +2491,16 @@ pub mod mut_visit {
2501
2491
PatKind :: Lit ( e) => vis. visit_expr ( e) ,
2502
2492
PatKind :: TupleStruct ( qself, path, elems) => {
2503
2493
vis. visit_qself ( qself) ;
2504
- vis. visit_path ( path) ;
2494
+ vis. visit_path ( path, * id ) ;
2505
2495
visit_thin_vec ( elems, |elem| vis. visit_pat ( elem) ) ;
2506
2496
}
2507
2497
PatKind :: Path ( qself, path) => {
2508
2498
vis. visit_qself ( qself) ;
2509
- vis. visit_path ( path) ;
2499
+ vis. visit_path ( path, * id ) ;
2510
2500
}
2511
2501
PatKind :: Struct ( qself, path, fields, _etc) => {
2512
2502
vis. visit_qself ( qself) ;
2513
- vis. visit_path ( path) ;
2503
+ vis. visit_path ( path, * id ) ;
2514
2504
fields. flat_map_in_place ( |field| vis. flat_map_pat_field ( field) ) ;
2515
2505
}
2516
2506
PatKind :: Box ( inner) => vis. visit_pat ( inner) ,
@@ -2537,7 +2527,7 @@ pub mod mut_visit {
2537
2527
) {
2538
2528
vis. visit_id ( id) ;
2539
2529
vis. visit_qself ( qself) ;
2540
- vis. visit_path ( path) ;
2530
+ vis. visit_path ( path, * id ) ;
2541
2531
}
2542
2532
2543
2533
pub fn walk_expr < T : MutVisitor > (
@@ -2674,7 +2664,7 @@ pub mod mut_visit {
2674
2664
ExprKind :: Underscore => { }
2675
2665
ExprKind :: Path ( qself, path) => {
2676
2666
vis. visit_qself ( qself) ;
2677
- vis. visit_path ( path) ;
2667
+ vis. visit_path ( path, * id ) ;
2678
2668
}
2679
2669
ExprKind :: Break ( label, expr) => {
2680
2670
visit_opt ( label, |label| vis. visit_label ( label) ) ;
@@ -2702,7 +2692,7 @@ pub mod mut_visit {
2702
2692
ExprKind :: Struct ( se) => {
2703
2693
let StructExpr { qself, path, fields, rest } = se. deref_mut ( ) ;
2704
2694
vis. visit_qself ( qself) ;
2705
- vis. visit_path ( path) ;
2695
+ vis. visit_path ( path, * id ) ;
2706
2696
fields. flat_map_in_place ( |field| vis. flat_map_expr_field ( field) ) ;
2707
2697
match rest {
2708
2698
StructRest :: Base ( expr) => vis. visit_expr ( expr) ,
@@ -2788,7 +2778,7 @@ pub mod mut_visit {
2788
2778
VisibilityKind :: Public | VisibilityKind :: Inherited => { }
2789
2779
VisibilityKind :: Restricted { path, id, shorthand : _ } => {
2790
2780
vis. visit_id ( id) ;
2791
- vis. visit_path ( path) ;
2781
+ vis. visit_path ( path, * id ) ;
2792
2782
}
2793
2783
}
2794
2784
visit_lazy_tts ( vis, tokens) ;
0 commit comments