Skip to content

Commit 3370623

Browse files
committed
Add visit_attr_args and Unify walk_attr_args
1 parent 7cccfb5 commit 3370623

File tree

1 file changed

+25
-30
lines changed

1 file changed

+25
-30
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ macro_rules! make_ast_visitor {
120120
}
121121

122122
mut_only_visit!{visit_lazy_tts}
123+
mut_only_visit!{visit_delim_args}
123124

124125
macro_rules! try_v {
125126
($visit: expr) => {
@@ -309,6 +310,7 @@ macro_rules! make_ast_visitor {
309310
make_visit!{AnonConst; visit_anon_const, walk_anon_const}
310311
make_visit!{Arm; visit_arm, walk_arm}
311312
make_visit!{AssocItemConstraint; visit_assoc_item_constraint, walk_assoc_item_constraint}
313+
make_visit!{AttrArgs; visit_attr_args, walk_attr_args}
312314
make_visit!{Attribute; visit_attribute, walk_attribute}
313315
make_visit!{Block; visit_block, walk_block}
314316
make_visit!{CaptureBy; visit_capture_by, walk_capture_by}
@@ -398,6 +400,26 @@ macro_rules! make_ast_visitor {
398400
return_result!(V)
399401
}
400402

403+
pub fn walk_attr_args<$($lt,)? V: $trait$(<$lt>)?>(
404+
vis: &mut V,
405+
args: ref_t!(AttrArgs)
406+
) -> result!(V) {
407+
match args {
408+
AttrArgs::Empty => {}
409+
AttrArgs::Delimited(args) => {
410+
visit_delim_args!(vis, args);
411+
}
412+
AttrArgs::Eq(eq_span, AttrArgsEq::Ast(expr)) => {
413+
try_v!(vis.visit_expr(expr));
414+
try_v!(visit_span!(vis, eq_span));
415+
}
416+
AttrArgs::Eq(_eq_span, AttrArgsEq::Hir(lit)) => {
417+
unreachable!("in literal form when visiting mac args eq: {:?}", lit)
418+
}
419+
}
420+
return_result!(V)
421+
}
422+
401423
pub fn walk_block<$($lt,)? V: $trait$(<$lt>)?>(
402424
vis: &mut V,
403425
block: ref_t!(Block)
@@ -1640,24 +1662,12 @@ pub mod visit {
16401662
let NormalAttr { item, tokens: _ } = &**normal;
16411663
let AttrItem { unsafety: _, path, args, tokens: _ } = item;
16421664
try_visit!(visitor.visit_path(path, DUMMY_NODE_ID));
1643-
try_visit!(walk_attr_args(visitor, args));
1665+
try_visit!(visitor.visit_attr_args(args));
16441666
}
16451667
AttrKind::DocComment(_kind, _sym) => {}
16461668
}
16471669
V::Result::output()
16481670
}
1649-
1650-
pub fn walk_attr_args<'a, V: Visitor<'a>>(visitor: &mut V, args: &'a AttrArgs) -> V::Result {
1651-
match args {
1652-
AttrArgs::Empty => {}
1653-
AttrArgs::Delimited(_args) => {}
1654-
AttrArgs::Eq(_eq_span, AttrArgsEq::Ast(expr)) => try_visit!(visitor.visit_expr(expr)),
1655-
AttrArgs::Eq(_eq_span, AttrArgsEq::Hir(lit)) => {
1656-
unreachable!("in literal form when walking mac args eq: {:?}", lit)
1657-
}
1658-
}
1659-
V::Result::output()
1660-
}
16611671
}
16621672

16631673
pub mod mut_visit {
@@ -1756,21 +1766,6 @@ pub mod mut_visit {
17561766
visit_vec(bounds, |bound| vis.visit_param_bound(bound, ctxt));
17571767
}
17581768

1759-
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
1760-
fn visit_attr_args<T: MutVisitor>(vis: &mut T, args: &mut AttrArgs) {
1761-
match args {
1762-
AttrArgs::Empty => {}
1763-
AttrArgs::Delimited(args) => visit_delim_args(vis, args),
1764-
AttrArgs::Eq(eq_span, AttrArgsEq::Ast(expr)) => {
1765-
vis.visit_expr(expr);
1766-
vis.visit_span(eq_span);
1767-
}
1768-
AttrArgs::Eq(_eq_span, AttrArgsEq::Hir(lit)) => {
1769-
unreachable!("in literal form when visiting mac args eq: {:?}", lit)
1770-
}
1771-
}
1772-
}
1773-
17741769
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
17751770
fn visit_delim_args<T: MutVisitor>(vis: &mut T, args: &mut DelimArgs) {
17761771
let DelimArgs { dspan, delim: _, tokens } = args;
@@ -1891,7 +1886,7 @@ pub mod mut_visit {
18911886
tokens: attr_tokens,
18921887
} = &mut **normal;
18931888
vis.visit_path(path, DUMMY_NODE_ID);
1894-
visit_attr_args(vis, args);
1889+
vis.visit_attr_args(args);
18951890
visit_lazy_tts(vis, tokens);
18961891
visit_lazy_tts(vis, attr_tokens);
18971892
}
@@ -2074,7 +2069,7 @@ pub mod mut_visit {
20742069
token::NtMeta(item) => {
20752070
let AttrItem { unsafety: _, path, args, tokens } = item.deref_mut();
20762071
vis.visit_path(path, DUMMY_NODE_ID);
2077-
visit_attr_args(vis, args);
2072+
vis.visit_attr_args(args);
20782073
visit_lazy_tts(vis, tokens);
20792074
}
20802075
token::NtPath(path) => vis.visit_path(path, DUMMY_NODE_ID),

0 commit comments

Comments
 (0)