Skip to content

Commit ad74189

Browse files
committed
Unify walk_attribute
1 parent 29b10f3 commit ad74189

File tree

1 file changed

+23
-32
lines changed

1 file changed

+23
-32
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,29 @@ macro_rules! make_ast_visitor {
453453
return_result!(V)
454454
}
455455

456+
pub fn walk_attribute<$($lt,)? V: $trait$(<$lt>)?>(
457+
vis: &mut V,
458+
attr: ref_t!(Attribute)
459+
) -> result!(V) {
460+
let Attribute { kind, id:_, style: _, span } = attr;
461+
match kind {
462+
AttrKind::Normal(normal) => {
463+
let NormalAttr {
464+
item: AttrItem { unsafety, path, args, tokens },
465+
tokens: attr_tokens,
466+
} = &$($mut)? **normal;
467+
try_v!(vis.visit_safety(unsafety));
468+
try_v!(vis.visit_path(path, DUMMY_NODE_ID));
469+
try_v!(vis.visit_attr_args(args));
470+
visit_lazy_tts!(vis, tokens);
471+
visit_lazy_tts!(vis, attr_tokens);
472+
}
473+
AttrKind::DocComment(_kind, _sym) => {}
474+
}
475+
try_v!(visit_span!(vis, span));
476+
return_result!(V)
477+
}
478+
456479
pub fn walk_block<$($lt,)? V: $trait$(<$lt>)?>(
457480
vis: &mut V,
458481
block: ref_t!(Block)
@@ -1715,20 +1738,6 @@ pub mod visit {
17151738

17161739
visitor.visit_expr_post(expression)
17171740
}
1718-
1719-
pub fn walk_attribute<'a, V: Visitor<'a>>(visitor: &mut V, attr: &'a Attribute) -> V::Result {
1720-
let Attribute { kind, id: _, style: _, span: _ } = attr;
1721-
match kind {
1722-
AttrKind::Normal(normal) => {
1723-
let NormalAttr { item, tokens: _ } = &**normal;
1724-
let AttrItem { unsafety: _, path, args, tokens: _ } = item;
1725-
try_visit!(visitor.visit_path(path, DUMMY_NODE_ID));
1726-
try_visit!(visitor.visit_attr_args(args));
1727-
}
1728-
AttrKind::DocComment(_kind, _sym) => {}
1729-
}
1730-
V::Result::output()
1731-
}
17321741
}
17331742

17341743
pub mod mut_visit {
@@ -1866,24 +1875,6 @@ pub mod mut_visit {
18661875
smallvec![variant]
18671876
}
18681877

1869-
fn walk_attribute<T: MutVisitor>(vis: &mut T, attr: &mut Attribute) {
1870-
let Attribute { kind, id: _, style: _, span } = attr;
1871-
match kind {
1872-
AttrKind::Normal(normal) => {
1873-
let NormalAttr {
1874-
item: AttrItem { unsafety: _, path, args, tokens },
1875-
tokens: attr_tokens,
1876-
} = &mut **normal;
1877-
vis.visit_path(path, DUMMY_NODE_ID);
1878-
vis.visit_attr_args(args);
1879-
visit_lazy_tts(vis, tokens);
1880-
visit_lazy_tts(vis, attr_tokens);
1881-
}
1882-
AttrKind::DocComment(_kind, _sym) => {}
1883-
}
1884-
vis.visit_span(span);
1885-
}
1886-
18871878
fn walk_macro_def<T: MutVisitor>(vis: &mut T, macro_def: &mut MacroDef) {
18881879
let MacroDef { body, macro_rules: _ } = macro_def;
18891880
visit_delim_args(vis, body);

0 commit comments

Comments
 (0)