@@ -205,7 +205,6 @@ macro_rules! make_ast_visitor {
205
205
make_visit!{ MacroDef ; visit_macro_def, walk_macro_def}
206
206
make_visit!{ MetaItem ; visit_meta_item, walk_meta_item}
207
207
make_visit!{ MetaItemInner ; visit_meta_list_item, walk_meta_list_item}
208
- make_visit!{ Path ; visit_path, walk_path}
209
208
make_visit!{ PreciseCapturingArg ; visit_precise_capturing_arg, walk_precise_capturing_arg}
210
209
211
210
fn flat_map_foreign_item( & mut self , ni: P <ForeignItem >) -> SmallVec <[ P <ForeignItem >; 1 ] > {
@@ -287,7 +286,6 @@ macro_rules! make_ast_visitor {
287
286
make_visit!{ ForeignItem ; visit_foreign_item, walk_item}
288
287
make_visit!{ GenericParam ; visit_generic_param, walk_generic_param}
289
288
make_visit!{ Item ; visit_item, walk_item}
290
- make_visit!{ Path , _ id: NodeId ; visit_path, walk_path}
291
289
make_visit!{ Stmt ; visit_stmt, walk_stmt}
292
290
293
291
/// This method is a hack to workaround unstable of `stmt_expr_attributes`.
@@ -342,6 +340,7 @@ macro_rules! make_ast_visitor {
342
340
make_visit!{ Param ; visit_param, walk_param}
343
341
make_visit!{ ParenthesizedArgs ; visit_parenthesized_parameter_data, walk_parenthesized_parameter_data}
344
342
make_visit!{ PatField ; visit_pat_field, walk_pat_field}
343
+ make_visit!{ Path , _ id: NodeId ; visit_path, walk_path}
345
344
make_visit!{ PathSegment ; visit_path_segment, walk_path_segment}
346
345
make_visit!{ PolyTraitRef ; visit_poly_trait_ref, walk_poly_trait_ref}
347
346
make_visit!{ TraitRef ; visit_trait_ref, walk_trait_ref}
@@ -692,6 +691,17 @@ macro_rules! make_ast_visitor {
692
691
return_result!( V )
693
692
}
694
693
694
+ pub fn walk_path<$( $lt, ) ? V : $trait$( <$lt>) ?>(
695
+ vis: & mut V ,
696
+ path: ref_t!( Path )
697
+ ) -> result!( V ) {
698
+ let Path { span, segments, tokens } = path;
699
+ visit_list!( vis, visit_path_segment, segments) ;
700
+ visit_lazy_tts!( vis, tokens) ;
701
+ try_v!( visit_span!( vis, span) ) ;
702
+ return_result!( V )
703
+ }
704
+
695
705
pub fn walk_path_segment<$( $lt, ) ? V : $trait$( <$lt>) ?>(
696
706
vis: & mut V ,
697
707
segment: ref_t!( PathSegment )
@@ -720,13 +730,7 @@ macro_rules! make_ast_visitor {
720
730
id: NodeId ,
721
731
) -> result!( V ) {
722
732
let UseTree { prefix, kind, span } = use_tree;
723
- // TODO: Remove this after unifying visit_path
724
- try_v!( macro_if!{ $( $mut) ? { {
725
- let _ = id;
726
- vis. visit_path( prefix)
727
- } } else {
728
- vis. visit_path( prefix, id)
729
- } } ) ;
733
+ try_v!( vis. visit_path( prefix, id) ) ;
730
734
match kind {
731
735
UseTreeKind :: Simple ( rename) => {
732
736
// The extra IDs are handled during AST lowering.
@@ -1120,12 +1124,6 @@ pub mod visit {
1120
1124
V :: Result :: output ( )
1121
1125
}
1122
1126
1123
- pub fn walk_path < ' a , V : Visitor < ' a > > ( visitor : & mut V , path : & ' a Path ) -> V :: Result {
1124
- let Path { span : _, segments, tokens : _ } = path;
1125
- walk_list ! ( visitor, visit_path_segment, segments) ;
1126
- V :: Result :: output ( )
1127
- }
1128
-
1129
1127
pub fn walk_generic_arg < ' a , V > ( visitor : & mut V , generic_arg : & ' a GenericArg ) -> V :: Result
1130
1128
where
1131
1129
V : Visitor < ' a > ,
@@ -1808,7 +1806,7 @@ pub mod mut_visit {
1808
1806
}
1809
1807
TyKind :: Path ( qself, path) => {
1810
1808
vis. visit_qself ( qself) ;
1811
- vis. visit_path ( path) ;
1809
+ vis. visit_path ( path, * id ) ;
1812
1810
}
1813
1811
TyKind :: Array ( ty, length) => {
1814
1812
vis. visit_ty ( ty) ;
@@ -1842,14 +1840,6 @@ pub mod mut_visit {
1842
1840
smallvec ! [ variant]
1843
1841
}
1844
1842
1845
- fn walk_path < T : MutVisitor > ( vis : & mut T , Path { segments, span, tokens } : & mut Path ) {
1846
- for segment in segments {
1847
- vis. visit_path_segment ( segment) ;
1848
- }
1849
- visit_lazy_tts ( vis, tokens) ;
1850
- vis. visit_span ( span) ;
1851
- }
1852
-
1853
1843
fn walk_generic_arg < T : MutVisitor > ( vis : & mut T , arg : & mut GenericArg ) {
1854
1844
match arg {
1855
1845
GenericArg :: Lifetime ( lt) => vis. visit_lifetime ( lt, LifetimeCtxt :: GenericArg ) ,
@@ -1866,7 +1856,7 @@ pub mod mut_visit {
1866
1856
item : AttrItem { unsafety : _, path, args, tokens } ,
1867
1857
tokens : attr_tokens,
1868
1858
} = & mut * * normal;
1869
- vis. visit_path ( path) ;
1859
+ vis. visit_path ( path, DUMMY_NODE_ID ) ;
1870
1860
visit_attr_args ( vis, args) ;
1871
1861
visit_lazy_tts ( vis, tokens) ;
1872
1862
visit_lazy_tts ( vis, attr_tokens) ;
@@ -1878,7 +1868,7 @@ pub mod mut_visit {
1878
1868
1879
1869
fn walk_mac < T : MutVisitor > ( vis : & mut T , mac : & mut MacCall ) {
1880
1870
let MacCall { path, args } = mac;
1881
- vis. visit_path ( path) ;
1871
+ vis. visit_path ( path, DUMMY_NODE_ID ) ;
1882
1872
visit_delim_args ( vis, args) ;
1883
1873
}
1884
1874
@@ -2049,11 +2039,11 @@ pub mod mut_visit {
2049
2039
token:: NtLiteral ( expr) => vis. visit_expr ( expr) ,
2050
2040
token:: NtMeta ( item) => {
2051
2041
let AttrItem { unsafety : _, path, args, tokens } = item. deref_mut ( ) ;
2052
- vis. visit_path ( path) ;
2042
+ vis. visit_path ( path, DUMMY_NODE_ID ) ;
2053
2043
visit_attr_args ( vis, args) ;
2054
2044
visit_lazy_tts ( vis, tokens) ;
2055
2045
}
2056
- token:: NtPath ( path) => vis. visit_path ( path) ,
2046
+ token:: NtPath ( path) => vis. visit_path ( path, DUMMY_NODE_ID ) ,
2057
2047
token:: NtVis ( visib) => vis. visit_vis ( visib) ,
2058
2048
}
2059
2049
}
@@ -2143,7 +2133,7 @@ pub mod mut_visit {
2143
2133
}
2144
2134
PreciseCapturingArg :: Arg ( path, id) => {
2145
2135
vis. visit_id ( id) ;
2146
- vis. visit_path ( path) ;
2136
+ vis. visit_path ( path, * id ) ;
2147
2137
}
2148
2138
}
2149
2139
}
@@ -2184,7 +2174,7 @@ pub mod mut_visit {
2184
2174
2185
2175
fn walk_trait_ref < T : MutVisitor > ( vis : & mut T , TraitRef { path, ref_id } : & mut TraitRef ) {
2186
2176
vis. visit_id ( ref_id) ;
2187
- vis. visit_path ( path) ;
2177
+ vis. visit_path ( path, * ref_id ) ;
2188
2178
}
2189
2179
2190
2180
pub fn walk_flat_map_field_def < T : MutVisitor > (
@@ -2317,7 +2307,7 @@ pub mod mut_visit {
2317
2307
} ) => {
2318
2308
vis. visit_id ( id) ;
2319
2309
vis. visit_qself ( qself) ;
2320
- vis. visit_path ( path) ;
2310
+ vis. visit_path ( path, * id ) ;
2321
2311
if let Some ( rename) = rename {
2322
2312
vis. visit_ident ( rename) ;
2323
2313
}
@@ -2327,7 +2317,7 @@ pub mod mut_visit {
2327
2317
}
2328
2318
ItemKind :: DelegationMac ( box DelegationMac { qself, prefix, suffixes, body } ) => {
2329
2319
vis. visit_qself ( qself) ;
2330
- vis. visit_path ( prefix) ;
2320
+ vis. visit_path ( prefix, id ) ;
2331
2321
if let Some ( suffixes) = suffixes {
2332
2322
for ( ident, rename) in suffixes {
2333
2323
vis. visit_ident ( ident) ;
@@ -2378,7 +2368,7 @@ pub mod mut_visit {
2378
2368
} ) => {
2379
2369
visitor. visit_id ( id) ;
2380
2370
visitor. visit_qself ( qself) ;
2381
- visitor. visit_path ( path) ;
2371
+ visitor. visit_path ( path, * id ) ;
2382
2372
if let Some ( rename) = rename {
2383
2373
visitor. visit_ident ( rename) ;
2384
2374
}
@@ -2393,7 +2383,7 @@ pub mod mut_visit {
2393
2383
body,
2394
2384
} ) => {
2395
2385
visitor. visit_qself ( qself) ;
2396
- visitor. visit_path ( prefix) ;
2386
+ visitor. visit_path ( prefix, id ) ;
2397
2387
if let Some ( suffixes) = suffixes {
2398
2388
for ( ident, rename) in suffixes {
2399
2389
visitor. visit_ident ( ident) ;
@@ -2495,16 +2485,16 @@ pub mod mut_visit {
2495
2485
PatKind :: Lit ( e) => vis. visit_expr ( e) ,
2496
2486
PatKind :: TupleStruct ( qself, path, elems) => {
2497
2487
vis. visit_qself ( qself) ;
2498
- vis. visit_path ( path) ;
2488
+ vis. visit_path ( path, * id ) ;
2499
2489
visit_thin_vec ( elems, |elem| vis. visit_pat ( elem) ) ;
2500
2490
}
2501
2491
PatKind :: Path ( qself, path) => {
2502
2492
vis. visit_qself ( qself) ;
2503
- vis. visit_path ( path) ;
2493
+ vis. visit_path ( path, * id ) ;
2504
2494
}
2505
2495
PatKind :: Struct ( qself, path, fields, _etc) => {
2506
2496
vis. visit_qself ( qself) ;
2507
- vis. visit_path ( path) ;
2497
+ vis. visit_path ( path, * id ) ;
2508
2498
fields. flat_map_in_place ( |field| vis. flat_map_pat_field ( field) ) ;
2509
2499
}
2510
2500
PatKind :: Box ( inner) => vis. visit_pat ( inner) ,
@@ -2531,7 +2521,7 @@ pub mod mut_visit {
2531
2521
) {
2532
2522
vis. visit_id ( id) ;
2533
2523
vis. visit_qself ( qself) ;
2534
- vis. visit_path ( path) ;
2524
+ vis. visit_path ( path, * id ) ;
2535
2525
}
2536
2526
2537
2527
pub fn walk_expr < T : MutVisitor > (
@@ -2668,7 +2658,7 @@ pub mod mut_visit {
2668
2658
ExprKind :: Underscore => { }
2669
2659
ExprKind :: Path ( qself, path) => {
2670
2660
vis. visit_qself ( qself) ;
2671
- vis. visit_path ( path) ;
2661
+ vis. visit_path ( path, * id ) ;
2672
2662
}
2673
2663
ExprKind :: Break ( label, expr) => {
2674
2664
visit_opt ( label, |label| vis. visit_label ( label) ) ;
@@ -2696,7 +2686,7 @@ pub mod mut_visit {
2696
2686
ExprKind :: Struct ( se) => {
2697
2687
let StructExpr { qself, path, fields, rest } = se. deref_mut ( ) ;
2698
2688
vis. visit_qself ( qself) ;
2699
- vis. visit_path ( path) ;
2689
+ vis. visit_path ( path, * id ) ;
2700
2690
fields. flat_map_in_place ( |field| vis. flat_map_expr_field ( field) ) ;
2701
2691
match rest {
2702
2692
StructRest :: Base ( expr) => vis. visit_expr ( expr) ,
@@ -2782,7 +2772,7 @@ pub mod mut_visit {
2782
2772
VisibilityKind :: Public | VisibilityKind :: Inherited => { }
2783
2773
VisibilityKind :: Restricted { path, id, shorthand : _ } => {
2784
2774
vis. visit_id ( id) ;
2785
- vis. visit_path ( path) ;
2775
+ vis. visit_path ( path, * id ) ;
2786
2776
}
2787
2777
}
2788
2778
visit_lazy_tts ( vis, tokens) ;
0 commit comments