Skip to content

Commit 07b49f7

Browse files
committed
Unify walk_local
1 parent 3a611d7 commit 07b49f7

File tree

1 file changed

+27
-34
lines changed

1 file changed

+27
-34
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ macro_rules! make_ast_visitor {
305305
make_visit!{CaptureBy, visit_capture_by, walk_capture_by}
306306
make_visit!{VariantData, visit_variant_data, walk_variant_data}
307307
make_visit!{FnDecl, visit_fn_decl, walk_fn_decl}
308-
make_visit!{P!(Local), visit_local, walk_local}
308+
make_visit!{Local, visit_local, walk_local}
309309
make_visit!{P!(Pat), visit_pat, walk_pat}
310310
make_visit!{P!(Expr), visit_expr, walk_expr}
311311
make_visit!{P!(Block), visit_block, walk_block}
@@ -818,6 +818,32 @@ macro_rules! make_ast_visitor {
818818
return_result!(V)
819819
}
820820

821+
pub fn walk_local<$($lt,)? V: $trait$(<$lt>)?>(
822+
vis: &mut V,
823+
local: ref_t!(Local)
824+
) -> result!(V) {
825+
let Local { id, pat, ty, kind, span, colon_sp, attrs, tokens } = local;
826+
try_v!(visit_id!(vis, id));
827+
visit_list!(vis, visit_attribute, flat_map_attribute, attrs);
828+
try_v!(vis.visit_pat(pat));
829+
visit_o!(ty, |ty| vis.visit_ty(ty));
830+
match kind {
831+
LocalKind::Decl => {}
832+
LocalKind::Init(init) => {
833+
try_v!(vis.visit_expr(init));
834+
}
835+
LocalKind::InitElse(init, els) => {
836+
try_v!(vis.visit_expr(init));
837+
try_v!(vis.visit_block(els));
838+
}
839+
}
840+
// TODO: Weird
841+
if_mut_expr!(visit_lazy_tts(vis, tokens), { let _ = tokens; });
842+
visit_o!(colon_sp, |sp| try_v!(visit_span!(vis, sp)));
843+
try_v!(visit_span!(vis, span));
844+
return_result!(V)
845+
}
846+
821847
make_walk_flat_map!{Arm, walk_flat_map_arm, visit_arm}
822848
make_walk_flat_map!{Attribute, walk_flat_map_attribute, visit_attribute}
823849
make_walk_flat_map!{ExprField, walk_flat_map_expr_field, visit_expr_field}
@@ -957,18 +983,6 @@ pub mod visit {
957983

958984
make_ast_visitor!(Visitor<'ast>);
959985

960-
pub fn walk_local<'a, V: Visitor<'a>>(visitor: &mut V, local: &'a Local) -> V::Result {
961-
let Local { id: _, pat, ty, kind, span: _, colon_sp: _, attrs, tokens: _ } = local;
962-
walk_list!(visitor, visit_attribute, attrs);
963-
try_visit!(visitor.visit_pat(pat));
964-
visit_opt!(visitor, visit_ty, ty);
965-
if let Some((init, els)) = kind.init_else_opt() {
966-
try_visit!(visitor.visit_expr(init));
967-
visit_opt!(visitor, visit_block, els);
968-
}
969-
V::Result::output()
970-
}
971-
972986
pub fn walk_trait_ref<'a, V: Visitor<'a>>(
973987
visitor: &mut V,
974988
trait_ref: &'a TraitRef,
@@ -1956,27 +1970,6 @@ pub mod mut_visit {
19561970
}
19571971
}
19581972

1959-
fn walk_local<T: MutVisitor>(vis: &mut T, local: &mut P<Local>) {
1960-
let Local { id, pat, ty, kind, span, colon_sp, attrs, tokens } = local.deref_mut();
1961-
vis.visit_id(id);
1962-
visit_attrs(vis, attrs);
1963-
vis.visit_pat(pat);
1964-
visit_opt(ty, |ty| vis.visit_ty(ty));
1965-
match kind {
1966-
LocalKind::Decl => {}
1967-
LocalKind::Init(init) => {
1968-
vis.visit_expr(init);
1969-
}
1970-
LocalKind::InitElse(init, els) => {
1971-
vis.visit_expr(init);
1972-
vis.visit_block(els);
1973-
}
1974-
}
1975-
visit_lazy_tts(vis, tokens);
1976-
visit_opt(colon_sp, |sp| vis.visit_span(sp));
1977-
vis.visit_span(span);
1978-
}
1979-
19801973
fn walk_attribute<T: MutVisitor>(vis: &mut T, attr: &mut Attribute) {
19811974
let Attribute { kind, id: _, style: _, span } = attr;
19821975
match kind {

0 commit comments

Comments
 (0)