Skip to content

Commit e3e2836

Browse files
committed
Unify walk_use_tree
1 parent 5fb543e commit e3e2836

File tree

1 file changed

+26
-39
lines changed

1 file changed

+26
-39
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 26 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ macro_rules! make_ast_visitor {
344344
self.visit_expr(ex)
345345
}
346346

347+
/// Id should be visited by the caller
347348
fn visit_use_tree(
348349
&mut self,
349350
use_tree: ref_t!(UseTree),
@@ -835,6 +836,31 @@ macro_rules! make_ast_visitor {
835836
return_result!(V)
836837
}
837838

839+
pub fn walk_use_tree<$($lt,)? V: $trait$(<$lt>)?>(
840+
vis: &mut V,
841+
use_tree: ref_t!(UseTree),
842+
id: NodeId,
843+
) -> result!(V) {
844+
let UseTree { prefix, kind, span } = use_tree;
845+
try_v!(vis.visit_path(prefix, id));
846+
match kind {
847+
UseTreeKind::Simple(rename) => {
848+
// The extra IDs are handled during AST lowering.
849+
visit_o!(rename, |rename: ref_t!(Ident)| visit_ident!(vis, rename));
850+
}
851+
UseTreeKind::Nested { items, span } => {
852+
for (tree, id) in items {
853+
try_v!(visit_id!(vis, id));
854+
vis.visit_use_tree(tree, *id, true);
855+
}
856+
try_v!(visit_span!(vis, span));
857+
}
858+
UseTreeKind::Glob => {}
859+
}
860+
try_v!(visit_span!(vis, span));
861+
return_result!(V)
862+
}
863+
838864
make_walk_flat_map!{Arm, walk_flat_map_arm, visit_arm}
839865
make_walk_flat_map!{Attribute, walk_flat_map_attribute, visit_attribute}
840866
make_walk_flat_map!{ExprField, walk_flat_map_expr_field, visit_expr_field}
@@ -1155,28 +1181,6 @@ pub mod visit {
11551181
V::Result::output()
11561182
}
11571183

1158-
pub fn walk_use_tree<'a, V: Visitor<'a>>(
1159-
visitor: &mut V,
1160-
use_tree: &'a UseTree,
1161-
id: NodeId,
1162-
) -> V::Result {
1163-
let UseTree { prefix, kind, span: _ } = use_tree;
1164-
try_visit!(visitor.visit_path(prefix, id));
1165-
match kind {
1166-
UseTreeKind::Simple(rename) => {
1167-
// The extra IDs are handled during AST lowering.
1168-
visit_opt!(visitor, visit_ident, *rename);
1169-
}
1170-
UseTreeKind::Glob => {}
1171-
UseTreeKind::Nested { ref items, span: _ } => {
1172-
for &(ref nested_tree, nested_id) in items {
1173-
try_visit!(visitor.visit_use_tree(nested_tree, nested_id, true));
1174-
}
1175-
}
1176-
}
1177-
V::Result::output()
1178-
}
1179-
11801184
pub fn walk_generic_arg<'a, V>(visitor: &mut V, generic_arg: &'a GenericArg) -> V::Result
11811185
where
11821186
V: Visitor<'a>,
@@ -1846,23 +1850,6 @@ pub mod mut_visit {
18461850
vis.visit_span(close);
18471851
}
18481852

1849-
fn walk_use_tree<T: MutVisitor>(vis: &mut T, use_tree: &mut UseTree, id: NodeId) {
1850-
let UseTree { prefix, kind, span } = use_tree;
1851-
vis.visit_path(prefix, id);
1852-
match kind {
1853-
UseTreeKind::Simple(rename) => visit_opt(rename, |rename| vis.visit_ident(rename)),
1854-
UseTreeKind::Nested { items, span } => {
1855-
for (tree, id) in items {
1856-
vis.visit_id(id);
1857-
vis.visit_use_tree(tree, *id, true);
1858-
}
1859-
vis.visit_span(span);
1860-
}
1861-
UseTreeKind::Glob => {}
1862-
}
1863-
vis.visit_span(span);
1864-
}
1865-
18661853
fn walk_assoc_item_constraint<T: MutVisitor>(
18671854
vis: &mut T,
18681855
AssocItemConstraint { id, ident, gen_args, kind, span }: &mut AssocItemConstraint,

0 commit comments

Comments
 (0)