Skip to content

Commit 0cef47d

Browse files
committed
Unify {visit,walk}_lifetime
1 parent 56c3aa6 commit 0cef47d

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)