@@ -205,7 +205,6 @@ macro_rules! make_ast_visitor {
205205 make_visit!{ MacroDef ; visit_macro_def, walk_macro_def}
206206 make_visit!{ MetaItem ; visit_meta_item, walk_meta_item}
207207 make_visit!{ MetaItemInner ; visit_meta_list_item, walk_meta_list_item}
208- make_visit!{ Path ; visit_path, walk_path}
209208 make_visit!{ PreciseCapturingArg ; visit_precise_capturing_arg, walk_precise_capturing_arg}
210209
211210 fn flat_map_foreign_item( & mut self , ni: P <ForeignItem >) -> SmallVec <[ P <ForeignItem >; 1 ] > {
@@ -287,7 +286,6 @@ macro_rules! make_ast_visitor {
287286 make_visit!{ ForeignItem ; visit_foreign_item, walk_item}
288287 make_visit!{ GenericParam ; visit_generic_param, walk_generic_param}
289288 make_visit!{ Item ; visit_item, walk_item}
290- make_visit!{ Path , _ id: NodeId ; visit_path, walk_path}
291289 make_visit!{ Stmt ; visit_stmt, walk_stmt}
292290
293291 /// This method is a hack to workaround unstable of `stmt_expr_attributes`.
@@ -342,6 +340,7 @@ macro_rules! make_ast_visitor {
342340 make_visit!{ Param ; visit_param, walk_param}
343341 make_visit!{ ParenthesizedArgs ; visit_parenthesized_parameter_data, walk_parenthesized_parameter_data}
344342 make_visit!{ PatField ; visit_pat_field, walk_pat_field}
343+ make_visit!{ Path , _ id: NodeId ; visit_path, walk_path}
345344 make_visit!{ PathSegment ; visit_path_segment, walk_path_segment}
346345 make_visit!{ PolyTraitRef ; visit_poly_trait_ref, walk_poly_trait_ref}
347346 make_visit!{ TraitRef ; visit_trait_ref, walk_trait_ref}
@@ -692,6 +691,17 @@ macro_rules! make_ast_visitor {
692691 return_result!( V )
693692 }
694693
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+
695705 pub fn walk_path_segment<$( $lt, ) ? V : $trait$( <$lt>) ?>(
696706 vis: & mut V ,
697707 segment: ref_t!( PathSegment )
@@ -720,13 +730,7 @@ macro_rules! make_ast_visitor {
720730 id: NodeId ,
721731 ) -> result!( V ) {
722732 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) ) ;
730734 match kind {
731735 UseTreeKind :: Simple ( rename) => {
732736 // The extra IDs are handled during AST lowering.
@@ -1120,12 +1124,6 @@ pub mod visit {
11201124 V :: Result :: output ( )
11211125 }
11221126
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-
11291127 pub fn walk_generic_arg < ' a , V > ( visitor : & mut V , generic_arg : & ' a GenericArg ) -> V :: Result
11301128 where
11311129 V : Visitor < ' a > ,
@@ -1808,7 +1806,7 @@ pub mod mut_visit {
18081806 }
18091807 TyKind :: Path ( qself, path) => {
18101808 vis. visit_qself ( qself) ;
1811- vis. visit_path ( path) ;
1809+ vis. visit_path ( path, * id ) ;
18121810 }
18131811 TyKind :: Array ( ty, length) => {
18141812 vis. visit_ty ( ty) ;
@@ -1842,14 +1840,6 @@ pub mod mut_visit {
18421840 smallvec ! [ variant]
18431841 }
18441842
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-
18531843 fn walk_generic_arg < T : MutVisitor > ( vis : & mut T , arg : & mut GenericArg ) {
18541844 match arg {
18551845 GenericArg :: Lifetime ( lt) => vis. visit_lifetime ( lt, LifetimeCtxt :: GenericArg ) ,
@@ -1866,7 +1856,7 @@ pub mod mut_visit {
18661856 item : AttrItem { unsafety : _, path, args, tokens } ,
18671857 tokens : attr_tokens,
18681858 } = & mut * * normal;
1869- vis. visit_path ( path) ;
1859+ vis. visit_path ( path, DUMMY_NODE_ID ) ;
18701860 visit_attr_args ( vis, args) ;
18711861 visit_lazy_tts ( vis, tokens) ;
18721862 visit_lazy_tts ( vis, attr_tokens) ;
@@ -1878,7 +1868,7 @@ pub mod mut_visit {
18781868
18791869 fn walk_mac < T : MutVisitor > ( vis : & mut T , mac : & mut MacCall ) {
18801870 let MacCall { path, args } = mac;
1881- vis. visit_path ( path) ;
1871+ vis. visit_path ( path, DUMMY_NODE_ID ) ;
18821872 visit_delim_args ( vis, args) ;
18831873 }
18841874
@@ -2049,11 +2039,11 @@ pub mod mut_visit {
20492039 token:: NtLiteral ( expr) => vis. visit_expr ( expr) ,
20502040 token:: NtMeta ( item) => {
20512041 let AttrItem { unsafety : _, path, args, tokens } = item. deref_mut ( ) ;
2052- vis. visit_path ( path) ;
2042+ vis. visit_path ( path, DUMMY_NODE_ID ) ;
20532043 visit_attr_args ( vis, args) ;
20542044 visit_lazy_tts ( vis, tokens) ;
20552045 }
2056- token:: NtPath ( path) => vis. visit_path ( path) ,
2046+ token:: NtPath ( path) => vis. visit_path ( path, DUMMY_NODE_ID ) ,
20572047 token:: NtVis ( visib) => vis. visit_vis ( visib) ,
20582048 }
20592049 }
@@ -2143,7 +2133,7 @@ pub mod mut_visit {
21432133 }
21442134 PreciseCapturingArg :: Arg ( path, id) => {
21452135 vis. visit_id ( id) ;
2146- vis. visit_path ( path) ;
2136+ vis. visit_path ( path, * id ) ;
21472137 }
21482138 }
21492139 }
@@ -2184,7 +2174,7 @@ pub mod mut_visit {
21842174
21852175 fn walk_trait_ref < T : MutVisitor > ( vis : & mut T , TraitRef { path, ref_id } : & mut TraitRef ) {
21862176 vis. visit_id ( ref_id) ;
2187- vis. visit_path ( path) ;
2177+ vis. visit_path ( path, * ref_id ) ;
21882178 }
21892179
21902180 pub fn walk_flat_map_field_def < T : MutVisitor > (
@@ -2317,7 +2307,7 @@ pub mod mut_visit {
23172307 } ) => {
23182308 vis. visit_id ( id) ;
23192309 vis. visit_qself ( qself) ;
2320- vis. visit_path ( path) ;
2310+ vis. visit_path ( path, * id ) ;
23212311 if let Some ( rename) = rename {
23222312 vis. visit_ident ( rename) ;
23232313 }
@@ -2327,7 +2317,7 @@ pub mod mut_visit {
23272317 }
23282318 ItemKind :: DelegationMac ( box DelegationMac { qself, prefix, suffixes, body } ) => {
23292319 vis. visit_qself ( qself) ;
2330- vis. visit_path ( prefix) ;
2320+ vis. visit_path ( prefix, id ) ;
23312321 if let Some ( suffixes) = suffixes {
23322322 for ( ident, rename) in suffixes {
23332323 vis. visit_ident ( ident) ;
@@ -2378,7 +2368,7 @@ pub mod mut_visit {
23782368 } ) => {
23792369 visitor. visit_id ( id) ;
23802370 visitor. visit_qself ( qself) ;
2381- visitor. visit_path ( path) ;
2371+ visitor. visit_path ( path, * id ) ;
23822372 if let Some ( rename) = rename {
23832373 visitor. visit_ident ( rename) ;
23842374 }
@@ -2393,7 +2383,7 @@ pub mod mut_visit {
23932383 body,
23942384 } ) => {
23952385 visitor. visit_qself ( qself) ;
2396- visitor. visit_path ( prefix) ;
2386+ visitor. visit_path ( prefix, id ) ;
23972387 if let Some ( suffixes) = suffixes {
23982388 for ( ident, rename) in suffixes {
23992389 visitor. visit_ident ( ident) ;
@@ -2495,16 +2485,16 @@ pub mod mut_visit {
24952485 PatKind :: Lit ( e) => vis. visit_expr ( e) ,
24962486 PatKind :: TupleStruct ( qself, path, elems) => {
24972487 vis. visit_qself ( qself) ;
2498- vis. visit_path ( path) ;
2488+ vis. visit_path ( path, * id ) ;
24992489 visit_thin_vec ( elems, |elem| vis. visit_pat ( elem) ) ;
25002490 }
25012491 PatKind :: Path ( qself, path) => {
25022492 vis. visit_qself ( qself) ;
2503- vis. visit_path ( path) ;
2493+ vis. visit_path ( path, * id ) ;
25042494 }
25052495 PatKind :: Struct ( qself, path, fields, _etc) => {
25062496 vis. visit_qself ( qself) ;
2507- vis. visit_path ( path) ;
2497+ vis. visit_path ( path, * id ) ;
25082498 fields. flat_map_in_place ( |field| vis. flat_map_pat_field ( field) ) ;
25092499 }
25102500 PatKind :: Box ( inner) => vis. visit_pat ( inner) ,
@@ -2531,7 +2521,7 @@ pub mod mut_visit {
25312521 ) {
25322522 vis. visit_id ( id) ;
25332523 vis. visit_qself ( qself) ;
2534- vis. visit_path ( path) ;
2524+ vis. visit_path ( path, * id ) ;
25352525 }
25362526
25372527 pub fn walk_expr < T : MutVisitor > (
@@ -2668,7 +2658,7 @@ pub mod mut_visit {
26682658 ExprKind :: Underscore => { }
26692659 ExprKind :: Path ( qself, path) => {
26702660 vis. visit_qself ( qself) ;
2671- vis. visit_path ( path) ;
2661+ vis. visit_path ( path, * id ) ;
26722662 }
26732663 ExprKind :: Break ( label, expr) => {
26742664 visit_opt ( label, |label| vis. visit_label ( label) ) ;
@@ -2696,7 +2686,7 @@ pub mod mut_visit {
26962686 ExprKind :: Struct ( se) => {
26972687 let StructExpr { qself, path, fields, rest } = se. deref_mut ( ) ;
26982688 vis. visit_qself ( qself) ;
2699- vis. visit_path ( path) ;
2689+ vis. visit_path ( path, * id ) ;
27002690 fields. flat_map_in_place ( |field| vis. flat_map_expr_field ( field) ) ;
27012691 match rest {
27022692 StructRest :: Base ( expr) => vis. visit_expr ( expr) ,
@@ -2782,7 +2772,7 @@ pub mod mut_visit {
27822772 VisibilityKind :: Public | VisibilityKind :: Inherited => { }
27832773 VisibilityKind :: Restricted { path, id, shorthand : _ } => {
27842774 vis. visit_id ( id) ;
2785- vis. visit_path ( path) ;
2775+ vis. visit_path ( path, * id ) ;
27862776 }
27872777 }
27882778 visit_lazy_tts ( vis, tokens) ;
0 commit comments