Skip to content

Commit 72ef199

Browse files
committed
Unify walk_local
1 parent b3a3ab1 commit 72ef199

File tree

1 file changed

+28
-35
lines changed

1 file changed

+28
-35
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 28 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ macro_rules! make_ast_visitor {
107107
};
108108
}
109109

110-
#[allow(unused)]
111110
macro_rules! mut_only_visit {
112111
($name: ident) => {
113112
macro_rules! $name {
@@ -123,6 +122,8 @@ macro_rules! make_ast_visitor {
123122
};
124123
}
125124

125+
mut_only_visit!{visit_lazy_tts}
126+
126127
#[allow(unused)]
127128
macro_rules! try_v {
128129
($visit: expr) => {
@@ -342,6 +343,7 @@ macro_rules! make_ast_visitor {
342343
make_visit!{InlineAsmSym; visit_inline_asm_sym, walk_inline_asm_sym}
343344
make_visit!{Label; visit_label, walk_label}
344345
make_visit!{Lifetime, _ ctxt: LifetimeCtxt; visit_lifetime, walk_lifetime}
346+
make_visit!{Local; visit_local, walk_local}
345347
make_visit!{MacCall; visit_mac_call, walk_mac}
346348
make_visit!{MutTy; visit_mt, walk_mt}
347349
make_visit!{Option<P<QSelf>>; visit_qself, walk_qself}
@@ -359,7 +361,6 @@ macro_rules! make_ast_visitor {
359361

360362
make_visit!{P!(Block); visit_block, walk_block}
361363
make_visit!{P!(Expr); visit_expr, walk_expr}
362-
make_visit!{P!(Local); visit_local, walk_local}
363364
make_visit!{P!(Pat); visit_pat, walk_pat}
364365
make_visit!{P!(Ty); visit_ty, walk_ty}
365366

@@ -614,6 +615,31 @@ macro_rules! make_ast_visitor {
614615
return_result!(V)
615616
}
616617

618+
pub fn walk_local<$($lt,)? V: $trait$(<$lt>)?>(
619+
vis: &mut V,
620+
local: ref_t!(Local)
621+
) -> result!(V) {
622+
let Local { id, pat, ty, kind, span, colon_sp, attrs, tokens } = local;
623+
try_v!(visit_id!(vis, id));
624+
visit_list!(vis, visit_attribute, attrs);
625+
try_v!(vis.visit_pat(pat));
626+
visit_o!(ty, |ty| vis.visit_ty(ty));
627+
match kind {
628+
LocalKind::Decl => {}
629+
LocalKind::Init(init) => {
630+
try_v!(vis.visit_expr(init));
631+
}
632+
LocalKind::InitElse(init, els) => {
633+
try_v!(vis.visit_expr(init));
634+
try_v!(vis.visit_block(els));
635+
}
636+
}
637+
visit_lazy_tts!(vis, tokens);
638+
visit_o!(colon_sp, |sp| try_v!(visit_span!(vis, sp)));
639+
try_v!(visit_span!(vis, span));
640+
return_result!(V)
641+
}
642+
617643
pub fn walk_mt<$($lt,)? V: $trait$(<$lt>)?>(
618644
vis: &mut V,
619645
mt: ref_t!(MutTy)
@@ -899,18 +925,6 @@ pub mod visit {
899925
V::Result::output()
900926
}
901927

902-
pub fn walk_local<'a, V: Visitor<'a>>(visitor: &mut V, local: &'a Local) -> V::Result {
903-
let Local { id: _, pat, ty, kind, span: _, colon_sp: _, attrs, tokens: _ } = local;
904-
walk_list!(visitor, visit_attribute, attrs);
905-
try_visit!(visitor.visit_pat(pat));
906-
visit_opt!(visitor, visit_ty, ty);
907-
if let Some((init, els)) = kind.init_else_opt() {
908-
try_visit!(visitor.visit_expr(init));
909-
visit_opt!(visitor, visit_block, els);
910-
}
911-
V::Result::output()
912-
}
913-
914928
pub fn walk_trait_ref<'a, V: Visitor<'a>>(
915929
visitor: &mut V,
916930
trait_ref: &'a TraitRef,
@@ -1859,27 +1873,6 @@ pub mod mut_visit {
18591873
}
18601874
}
18611875

1862-
fn walk_local<T: MutVisitor>(vis: &mut T, local: &mut P<Local>) {
1863-
let Local { id, pat, ty, kind, span, colon_sp, attrs, tokens } = local.deref_mut();
1864-
vis.visit_id(id);
1865-
visit_attrs(vis, attrs);
1866-
vis.visit_pat(pat);
1867-
visit_opt(ty, |ty| vis.visit_ty(ty));
1868-
match kind {
1869-
LocalKind::Decl => {}
1870-
LocalKind::Init(init) => {
1871-
vis.visit_expr(init);
1872-
}
1873-
LocalKind::InitElse(init, els) => {
1874-
vis.visit_expr(init);
1875-
vis.visit_block(els);
1876-
}
1877-
}
1878-
visit_lazy_tts(vis, tokens);
1879-
visit_opt(colon_sp, |sp| vis.visit_span(sp));
1880-
vis.visit_span(span);
1881-
}
1882-
18831876
fn walk_attribute<T: MutVisitor>(vis: &mut T, attr: &mut Attribute) {
18841877
let Attribute { kind, id: _, style: _, span } = attr;
18851878
match kind {

0 commit comments

Comments
 (0)