Skip to content

Commit a3565ff

Browse files
committed
Add visit_attr_args and Unify walk_attr_args
1 parent 2dfc990 commit a3565ff

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
@@ -123,6 +123,7 @@ macro_rules! make_ast_visitor {
123123
}
124124

125125
mut_only_visit!{visit_lazy_tts}
126+
mut_only_visit!{visit_delim_args}
126127

127128
#[allow(unused)]
128129
macro_rules! try_v {
@@ -315,6 +316,7 @@ macro_rules! make_ast_visitor {
315316
make_visit!{AnonConst; visit_anon_const, walk_anon_const}
316317
make_visit!{Arm; visit_arm, walk_arm}
317318
make_visit!{AssocItemConstraint; visit_assoc_item_constraint, walk_assoc_item_constraint}
319+
make_visit!{AttrArgs; visit_attr_args, walk_attr_args}
318320
make_visit!{Attribute; visit_attribute, walk_attribute}
319321
make_visit!{Block; visit_block, walk_block}
320322
make_visit!{CaptureBy; visit_capture_by, walk_capture_by}
@@ -404,6 +406,26 @@ macro_rules! make_ast_visitor {
404406
return_result!(V)
405407
}
406408

409+
pub fn walk_attr_args<$($lt,)? V: $trait$(<$lt>)?>(
410+
vis: &mut V,
411+
args: ref_t!(AttrArgs)
412+
) -> result!(V) {
413+
match args {
414+
AttrArgs::Empty => {}
415+
AttrArgs::Delimited(args) => {
416+
visit_delim_args!(vis, args);
417+
}
418+
AttrArgs::Eq(eq_span, AttrArgsEq::Ast(expr)) => {
419+
try_v!(vis.visit_expr(expr));
420+
try_v!(visit_span!(vis, eq_span));
421+
}
422+
AttrArgs::Eq(_eq_span, AttrArgsEq::Hir(lit)) => {
423+
unreachable!("in literal form when visiting mac args eq: {:?}", lit)
424+
}
425+
}
426+
return_result!(V)
427+
}
428+
407429
pub fn walk_block<$($lt,)? V: $trait$(<$lt>)?>(
408430
vis: &mut V,
409431
block: ref_t!(Block)
@@ -1646,24 +1668,12 @@ pub mod visit {
16461668
let NormalAttr { item, tokens: _ } = &**normal;
16471669
let AttrItem { unsafety: _, path, args, tokens: _ } = item;
16481670
try_visit!(visitor.visit_path(path, DUMMY_NODE_ID));
1649-
try_visit!(walk_attr_args(visitor, args));
1671+
try_visit!(visitor.visit_attr_args(args));
16501672
}
16511673
AttrKind::DocComment(_kind, _sym) => {}
16521674
}
16531675
V::Result::output()
16541676
}
1655-
1656-
pub fn walk_attr_args<'a, V: Visitor<'a>>(visitor: &mut V, args: &'a AttrArgs) -> V::Result {
1657-
match args {
1658-
AttrArgs::Empty => {}
1659-
AttrArgs::Delimited(_args) => {}
1660-
AttrArgs::Eq(_eq_span, AttrArgsEq::Ast(expr)) => try_visit!(visitor.visit_expr(expr)),
1661-
AttrArgs::Eq(_eq_span, AttrArgsEq::Hir(lit)) => {
1662-
unreachable!("in literal form when walking mac args eq: {:?}", lit)
1663-
}
1664-
}
1665-
V::Result::output()
1666-
}
16671677
}
16681678

16691679
pub mod mut_visit {
@@ -1762,21 +1772,6 @@ pub mod mut_visit {
17621772
visit_vec(bounds, |bound| vis.visit_param_bound(bound, ctxt));
17631773
}
17641774

1765-
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
1766-
fn visit_attr_args<T: MutVisitor>(vis: &mut T, args: &mut AttrArgs) {
1767-
match args {
1768-
AttrArgs::Empty => {}
1769-
AttrArgs::Delimited(args) => visit_delim_args(vis, args),
1770-
AttrArgs::Eq(eq_span, AttrArgsEq::Ast(expr)) => {
1771-
vis.visit_expr(expr);
1772-
vis.visit_span(eq_span);
1773-
}
1774-
AttrArgs::Eq(_eq_span, AttrArgsEq::Hir(lit)) => {
1775-
unreachable!("in literal form when visiting mac args eq: {:?}", lit)
1776-
}
1777-
}
1778-
}
1779-
17801775
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
17811776
fn visit_delim_args<T: MutVisitor>(vis: &mut T, args: &mut DelimArgs) {
17821777
let DelimArgs { dspan, delim: _, tokens } = args;
@@ -1897,7 +1892,7 @@ pub mod mut_visit {
18971892
tokens: attr_tokens,
18981893
} = &mut **normal;
18991894
vis.visit_path(path, DUMMY_NODE_ID);
1900-
visit_attr_args(vis, args);
1895+
vis.visit_attr_args(args);
19011896
visit_lazy_tts(vis, tokens);
19021897
visit_lazy_tts(vis, attr_tokens);
19031898
}
@@ -2080,7 +2075,7 @@ pub mod mut_visit {
20802075
token::NtMeta(item) => {
20812076
let AttrItem { unsafety: _, path, args, tokens } = item.deref_mut();
20822077
vis.visit_path(path, DUMMY_NODE_ID);
2083-
visit_attr_args(vis, args);
2078+
vis.visit_attr_args(args);
20842079
visit_lazy_tts(vis, tokens);
20852080
}
20862081
token::NtPath(path) => vis.visit_path(path, DUMMY_NODE_ID),

0 commit comments

Comments
 (0)