@@ -193,7 +193,6 @@ macro_rules! make_ast_visitor {
193193 make_visit!{ CoroutineKind ; visit_coroutine_kind, walk_coroutine_kind}
194194 make_visit!{ FnHeader ; visit_fn_header, walk_fn_header}
195195 make_visit!{ ForeignMod ; visit_foreign_mod, walk_foreign_mod}
196- make_visit!{ Lifetime ; visit_lifetime, walk_lifetime}
197196 make_visit!{ MacroDef ; visit_macro_def, walk_macro_def}
198197 make_visit!{ MetaItem ; visit_meta_item, walk_meta_item}
199198 make_visit!{ MetaItemInner ; visit_meta_list_item, walk_meta_list_item}
@@ -288,7 +287,6 @@ macro_rules! make_ast_visitor {
288287 make_visit!{ ForeignItem ; visit_foreign_item, walk_item}
289288 make_visit!{ GenericParam ; visit_generic_param, walk_generic_param}
290289 make_visit!{ Item ; visit_item, walk_item}
291- make_visit!{ Lifetime , _ ctxt: LifetimeCtxt ; visit_lifetime, walk_lifetime}
292290 make_visit!{ Param ; visit_param, walk_param}
293291 make_visit!{ PatField ; visit_pat_field, walk_pat_field}
294292 make_visit!{ Path , _ id: NodeId ; visit_path, walk_path}
@@ -340,6 +338,7 @@ macro_rules! make_ast_visitor {
340338 make_visit!{ InlineAsm ; visit_inline_asm, walk_inline_asm}
341339 make_visit!{ InlineAsmSym ; visit_inline_asm_sym, walk_inline_asm_sym}
342340 make_visit!{ Label ; visit_label, walk_label}
341+ make_visit!{ Lifetime , _ ctxt: LifetimeCtxt ; visit_lifetime, walk_lifetime}
343342 make_visit!{ MacCall ; visit_mac_call, walk_mac}
344343 make_visit!{ Option <P <QSelf >>; visit_qself, walk_qself}
345344 make_visit!{ PathSegment ; visit_path_segment, walk_path_segment}
@@ -373,6 +372,16 @@ macro_rules! make_ast_visitor {
373372 try_v!( vis. visit_ident( ident) ) ;
374373 return_result!( V )
375374 }
375+
376+ pub fn walk_lifetime<$( $lt, ) ? V : $trait$( <$lt>) ?>(
377+ vis: & mut V ,
378+ lifetime: ref_t!( Lifetime )
379+ ) -> result!( V ) {
380+ let Lifetime { id, ident } = lifetime;
381+ try_v!( visit_id!( vis, id) ) ;
382+ try_v!( vis. visit_ident( ident) ) ;
383+ return_result!( V )
384+ }
376385 }
377386}
378387
@@ -518,11 +527,6 @@ pub mod visit {
518527 V :: Result :: output ( )
519528 }
520529
521- pub fn walk_lifetime < ' a , V : Visitor < ' a > > ( visitor : & mut V , lifetime : & ' a Lifetime ) -> V :: Result {
522- let Lifetime { id : _, ident } = lifetime;
523- visitor. visit_ident ( ident)
524- }
525-
526530 pub fn walk_poly_trait_ref < ' a , V > ( visitor : & mut V , trait_ref : & ' a PolyTraitRef ) -> V :: Result
527531 where
528532 V : Visitor < ' a > ,
@@ -1470,7 +1474,7 @@ pub mod mut_visit {
14701474 //! that are created by the expansion of a macro.
14711475
14721476 use super :: * ;
1473- use crate :: visit:: { AssocCtxt , BoundKind } ;
1477+ use crate :: visit:: { AssocCtxt , BoundKind , LifetimeCtxt } ;
14741478
14751479 pub trait ExpectOne < A : Array > {
14761480 fn expect_one ( self , err : & ' static str ) -> A :: Item ;
@@ -1657,7 +1661,7 @@ pub mod mut_visit {
16571661 TyKind :: Slice ( ty) => vis. visit_ty ( ty) ,
16581662 TyKind :: Ptr ( mt) => vis. visit_mt ( mt) ,
16591663 TyKind :: Ref ( lt, mt) => {
1660- visit_opt ( lt, |lt| vis. visit_lifetime ( lt) ) ;
1664+ visit_opt ( lt, |lt| vis. visit_lifetime ( lt, LifetimeCtxt :: Ref ) ) ;
16611665 vis. visit_mt ( mt) ;
16621666 }
16631667 TyKind :: BareFn ( bft) => {
@@ -1750,7 +1754,7 @@ pub mod mut_visit {
17501754
17511755 fn walk_generic_arg < T : MutVisitor > ( vis : & mut T , arg : & mut GenericArg ) {
17521756 match arg {
1753- GenericArg :: Lifetime ( lt) => vis. visit_lifetime ( lt) ,
1757+ GenericArg :: Lifetime ( lt) => vis. visit_lifetime ( lt, LifetimeCtxt :: GenericArg ) ,
17541758 GenericArg :: Type ( ty) => vis. visit_ty ( ty) ,
17551759 GenericArg :: Const ( ct) => vis. visit_anon_const ( ct) ,
17561760 }
@@ -2094,7 +2098,7 @@ pub mod mut_visit {
20942098 fn walk_param_bound < T : MutVisitor > ( vis : & mut T , pb : & mut GenericBound ) {
20952099 match pb {
20962100 GenericBound :: Trait ( ty, _modifier) => vis. visit_poly_trait_ref ( ty) ,
2097- GenericBound :: Outlives ( lifetime) => walk_lifetime ( vis, lifetime ) ,
2101+ GenericBound :: Outlives ( lifetime) => vis. visit_lifetime ( lifetime , LifetimeCtxt :: Bound ) ,
20982102 GenericBound :: Use ( args, span) => {
20992103 for arg in args {
21002104 vis. visit_precise_capturing_arg ( arg) ;
@@ -2107,7 +2111,7 @@ pub mod mut_visit {
21072111 fn walk_precise_capturing_arg < T : MutVisitor > ( vis : & mut T , arg : & mut PreciseCapturingArg ) {
21082112 match arg {
21092113 PreciseCapturingArg :: Lifetime ( lt) => {
2110- vis. visit_lifetime ( lt) ;
2114+ vis. visit_lifetime ( lt, LifetimeCtxt :: GenericArg ) ;
21112115 }
21122116 PreciseCapturingArg :: Arg ( path, id) => {
21132117 vis. visit_id ( id) ;
@@ -2142,11 +2146,6 @@ pub mod mut_visit {
21422146 smallvec ! [ param]
21432147 }
21442148
2145- fn walk_lifetime < T : MutVisitor > ( vis : & mut T , Lifetime { id, ident } : & mut Lifetime ) {
2146- vis. visit_id ( id) ;
2147- vis. visit_ident ( ident) ;
2148- }
2149-
21502149 fn walk_generics < T : MutVisitor > ( vis : & mut T , generics : & mut Generics ) {
21512150 let Generics { params, where_clause, span } = generics;
21522151 params. flat_map_in_place ( |param| vis. flat_map_generic_param ( param) ) ;
@@ -2179,7 +2178,7 @@ pub mod mut_visit {
21792178 }
21802179 WherePredicate :: RegionPredicate ( rp) => {
21812180 let WhereRegionPredicate { span, lifetime, bounds } = rp;
2182- vis. visit_lifetime ( lifetime) ;
2181+ vis. visit_lifetime ( lifetime, LifetimeCtxt :: Bound ) ;
21832182 visit_vec ( bounds, |bound| vis. visit_param_bound ( bound, BoundKind :: Bound ) ) ;
21842183 vis. visit_span ( span) ;
21852184 }
0 commit comments