@@ -193,7 +193,6 @@ macro_rules! make_ast_visitor {
193
193
make_visit!{ CoroutineKind ; visit_coroutine_kind, walk_coroutine_kind}
194
194
make_visit!{ FnHeader ; visit_fn_header, walk_fn_header}
195
195
make_visit!{ ForeignMod ; visit_foreign_mod, walk_foreign_mod}
196
- make_visit!{ Lifetime ; visit_lifetime, walk_lifetime}
197
196
make_visit!{ MacroDef ; visit_macro_def, walk_macro_def}
198
197
make_visit!{ MetaItem ; visit_meta_item, walk_meta_item}
199
198
make_visit!{ MetaItemInner ; visit_meta_list_item, walk_meta_list_item}
@@ -288,7 +287,6 @@ macro_rules! make_ast_visitor {
288
287
make_visit!{ ForeignItem ; visit_foreign_item, walk_item}
289
288
make_visit!{ GenericParam ; visit_generic_param, walk_generic_param}
290
289
make_visit!{ Item ; visit_item, walk_item}
291
- make_visit!{ Lifetime , _ ctxt: LifetimeCtxt ; visit_lifetime, walk_lifetime}
292
290
make_visit!{ Param ; visit_param, walk_param}
293
291
make_visit!{ PatField ; visit_pat_field, walk_pat_field}
294
292
make_visit!{ Path , _ id: NodeId ; visit_path, walk_path}
@@ -340,6 +338,7 @@ macro_rules! make_ast_visitor {
340
338
make_visit!{ InlineAsm ; visit_inline_asm, walk_inline_asm}
341
339
make_visit!{ InlineAsmSym ; visit_inline_asm_sym, walk_inline_asm_sym}
342
340
make_visit!{ Label ; visit_label, walk_label}
341
+ make_visit!{ Lifetime , _ ctxt: LifetimeCtxt ; visit_lifetime, walk_lifetime}
343
342
make_visit!{ MacCall ; visit_mac_call, walk_mac}
344
343
make_visit!{ Option <P <QSelf >>; visit_qself, walk_qself}
345
344
make_visit!{ PathSegment ; visit_path_segment, walk_path_segment}
@@ -373,6 +372,16 @@ macro_rules! make_ast_visitor {
373
372
try_v!( vis. visit_ident( ident) ) ;
374
373
return_result!( V )
375
374
}
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
+ }
376
385
}
377
386
}
378
387
@@ -518,11 +527,6 @@ pub mod visit {
518
527
V :: Result :: output ( )
519
528
}
520
529
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
-
526
530
pub fn walk_poly_trait_ref < ' a , V > ( visitor : & mut V , trait_ref : & ' a PolyTraitRef ) -> V :: Result
527
531
where
528
532
V : Visitor < ' a > ,
@@ -1470,7 +1474,7 @@ pub mod mut_visit {
1470
1474
//! that are created by the expansion of a macro.
1471
1475
1472
1476
use super :: * ;
1473
- use crate :: visit:: { AssocCtxt , BoundKind } ;
1477
+ use crate :: visit:: { AssocCtxt , BoundKind , LifetimeCtxt } ;
1474
1478
1475
1479
pub trait ExpectOne < A : Array > {
1476
1480
fn expect_one ( self , err : & ' static str ) -> A :: Item ;
@@ -1657,7 +1661,7 @@ pub mod mut_visit {
1657
1661
TyKind :: Slice ( ty) => vis. visit_ty ( ty) ,
1658
1662
TyKind :: Ptr ( mt) => vis. visit_mt ( mt) ,
1659
1663
TyKind :: Ref ( lt, mt) => {
1660
- visit_opt ( lt, |lt| vis. visit_lifetime ( lt) ) ;
1664
+ visit_opt ( lt, |lt| vis. visit_lifetime ( lt, LifetimeCtxt :: Ref ) ) ;
1661
1665
vis. visit_mt ( mt) ;
1662
1666
}
1663
1667
TyKind :: BareFn ( bft) => {
@@ -1750,7 +1754,7 @@ pub mod mut_visit {
1750
1754
1751
1755
fn walk_generic_arg < T : MutVisitor > ( vis : & mut T , arg : & mut GenericArg ) {
1752
1756
match arg {
1753
- GenericArg :: Lifetime ( lt) => vis. visit_lifetime ( lt) ,
1757
+ GenericArg :: Lifetime ( lt) => vis. visit_lifetime ( lt, LifetimeCtxt :: GenericArg ) ,
1754
1758
GenericArg :: Type ( ty) => vis. visit_ty ( ty) ,
1755
1759
GenericArg :: Const ( ct) => vis. visit_anon_const ( ct) ,
1756
1760
}
@@ -2094,7 +2098,7 @@ pub mod mut_visit {
2094
2098
fn walk_param_bound < T : MutVisitor > ( vis : & mut T , pb : & mut GenericBound ) {
2095
2099
match pb {
2096
2100
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 ) ,
2098
2102
GenericBound :: Use ( args, span) => {
2099
2103
for arg in args {
2100
2104
vis. visit_precise_capturing_arg ( arg) ;
@@ -2107,7 +2111,7 @@ pub mod mut_visit {
2107
2111
fn walk_precise_capturing_arg < T : MutVisitor > ( vis : & mut T , arg : & mut PreciseCapturingArg ) {
2108
2112
match arg {
2109
2113
PreciseCapturingArg :: Lifetime ( lt) => {
2110
- vis. visit_lifetime ( lt) ;
2114
+ vis. visit_lifetime ( lt, LifetimeCtxt :: GenericArg ) ;
2111
2115
}
2112
2116
PreciseCapturingArg :: Arg ( path, id) => {
2113
2117
vis. visit_id ( id) ;
@@ -2142,11 +2146,6 @@ pub mod mut_visit {
2142
2146
smallvec ! [ param]
2143
2147
}
2144
2148
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
-
2150
2149
fn walk_generics < T : MutVisitor > ( vis : & mut T , generics : & mut Generics ) {
2151
2150
let Generics { params, where_clause, span } = generics;
2152
2151
params. flat_map_in_place ( |param| vis. flat_map_generic_param ( param) ) ;
@@ -2179,7 +2178,7 @@ pub mod mut_visit {
2179
2178
}
2180
2179
WherePredicate :: RegionPredicate ( rp) => {
2181
2180
let WhereRegionPredicate { span, lifetime, bounds } = rp;
2182
- vis. visit_lifetime ( lifetime) ;
2181
+ vis. visit_lifetime ( lifetime, LifetimeCtxt :: Bound ) ;
2183
2182
visit_vec ( bounds, |bound| vis. visit_param_bound ( bound, BoundKind :: Bound ) ) ;
2184
2183
vis. visit_span ( span) ;
2185
2184
}
0 commit comments