Skip to content

Commit 924326f

Browse files
committed
Unify walk_local
1 parent 0d7a055 commit 924326f

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
@@ -104,7 +104,6 @@ macro_rules! make_ast_visitor {
104104
};
105105
}
106106

107-
#[allow(unused)]
108107
macro_rules! mut_only_visit {
109108
($name: ident) => {
110109
macro_rules! $name {
@@ -120,6 +119,8 @@ macro_rules! make_ast_visitor {
120119
};
121120
}
122121

122+
mut_only_visit!{visit_lazy_tts}
123+
123124
macro_rules! try_v {
124125
($visit: expr) => {
125126
macro_if!{$($mut)? { $visit } else { try_visit!($visit) }}
@@ -336,6 +337,7 @@ macro_rules! make_ast_visitor {
336337
make_visit!{InlineAsmSym; visit_inline_asm_sym, walk_inline_asm_sym}
337338
make_visit!{Label; visit_label, walk_label}
338339
make_visit!{Lifetime, _ ctxt: LifetimeCtxt; visit_lifetime, walk_lifetime}
340+
make_visit!{Local; visit_local, walk_local}
339341
make_visit!{MacCall; visit_mac_call, walk_mac}
340342
make_visit!{MutTy; visit_mt, walk_mt}
341343
make_visit!{Option<P<QSelf>>; visit_qself, walk_qself}
@@ -353,7 +355,6 @@ macro_rules! make_ast_visitor {
353355

354356
make_visit!{P!(Block); visit_block, walk_block}
355357
make_visit!{P!(Expr); visit_expr, walk_expr}
356-
make_visit!{P!(Local); visit_local, walk_local}
357358
make_visit!{P!(Pat); visit_pat, walk_pat}
358359
make_visit!{P!(Ty); visit_ty, walk_ty}
359360

@@ -608,6 +609,31 @@ macro_rules! make_ast_visitor {
608609
return_result!(V)
609610
}
610611

612+
pub fn walk_local<$($lt,)? V: $trait$(<$lt>)?>(
613+
vis: &mut V,
614+
local: ref_t!(Local)
615+
) -> result!(V) {
616+
let Local { id, pat, ty, kind, span, colon_sp, attrs, tokens } = local;
617+
try_v!(visit_id!(vis, id));
618+
visit_list!(vis, visit_attribute, attrs);
619+
try_v!(vis.visit_pat(pat));
620+
visit_o!(ty, |ty| vis.visit_ty(ty));
621+
match kind {
622+
LocalKind::Decl => {}
623+
LocalKind::Init(init) => {
624+
try_v!(vis.visit_expr(init));
625+
}
626+
LocalKind::InitElse(init, els) => {
627+
try_v!(vis.visit_expr(init));
628+
try_v!(vis.visit_block(els));
629+
}
630+
}
631+
visit_lazy_tts!(vis, tokens);
632+
visit_o!(colon_sp, |sp| try_v!(visit_span!(vis, sp)));
633+
try_v!(visit_span!(vis, span));
634+
return_result!(V)
635+
}
636+
611637
pub fn walk_mt<$($lt,)? V: $trait$(<$lt>)?>(
612638
vis: &mut V,
613639
mt: ref_t!(MutTy)
@@ -893,18 +919,6 @@ pub mod visit {
893919
V::Result::output()
894920
}
895921

896-
pub fn walk_local<'a, V: Visitor<'a>>(visitor: &mut V, local: &'a Local) -> V::Result {
897-
let Local { id: _, pat, ty, kind, span: _, colon_sp: _, attrs, tokens: _ } = local;
898-
walk_list!(visitor, visit_attribute, attrs);
899-
try_visit!(visitor.visit_pat(pat));
900-
visit_opt!(visitor, visit_ty, ty);
901-
if let Some((init, els)) = kind.init_else_opt() {
902-
try_visit!(visitor.visit_expr(init));
903-
visit_opt!(visitor, visit_block, els);
904-
}
905-
V::Result::output()
906-
}
907-
908922
pub fn walk_trait_ref<'a, V: Visitor<'a>>(
909923
visitor: &mut V,
910924
trait_ref: &'a TraitRef,
@@ -1853,27 +1867,6 @@ pub mod mut_visit {
18531867
}
18541868
}
18551869

1856-
fn walk_local<T: MutVisitor>(vis: &mut T, local: &mut P<Local>) {
1857-
let Local { id, pat, ty, kind, span, colon_sp, attrs, tokens } = local.deref_mut();
1858-
vis.visit_id(id);
1859-
visit_attrs(vis, attrs);
1860-
vis.visit_pat(pat);
1861-
visit_opt(ty, |ty| vis.visit_ty(ty));
1862-
match kind {
1863-
LocalKind::Decl => {}
1864-
LocalKind::Init(init) => {
1865-
vis.visit_expr(init);
1866-
}
1867-
LocalKind::InitElse(init, els) => {
1868-
vis.visit_expr(init);
1869-
vis.visit_block(els);
1870-
}
1871-
}
1872-
visit_lazy_tts(vis, tokens);
1873-
visit_opt(colon_sp, |sp| vis.visit_span(sp));
1874-
vis.visit_span(span);
1875-
}
1876-
18771870
fn walk_attribute<T: MutVisitor>(vis: &mut T, attr: &mut Attribute) {
18781871
let Attribute { kind, id: _, style: _, span } = attr;
18791872
match kind {

0 commit comments

Comments
 (0)