Skip to content

Commit d70fb48

Browse files
committed
Unify walk_attribute
1 parent 1751802 commit d70fb48

File tree

1 file changed

+23
-32
lines changed

1 file changed

+23
-32
lines changed

compiler/rustc_ast/src/visitors.rs

+23-32
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,29 @@ macro_rules! make_ast_visitor {
447447
return_result!(V)
448448
}
449449

450+
pub fn walk_attribute<$($lt,)? V: $trait$(<$lt>)?>(
451+
vis: &mut V,
452+
attr: ref_t!(Attribute)
453+
) -> result!(V) {
454+
let Attribute { kind, id:_, style: _, span } = attr;
455+
match kind {
456+
AttrKind::Normal(normal) => {
457+
let NormalAttr {
458+
item: AttrItem { unsafety, path, args, tokens },
459+
tokens: attr_tokens,
460+
} = &$($mut)? **normal;
461+
try_v!(vis.visit_safety(unsafety));
462+
try_v!(vis.visit_path(path, DUMMY_NODE_ID));
463+
try_v!(vis.visit_attr_args(args));
464+
visit_lazy_tts!(vis, tokens);
465+
visit_lazy_tts!(vis, attr_tokens);
466+
}
467+
AttrKind::DocComment(_kind, _sym) => {}
468+
}
469+
try_v!(visit_span!(vis, span));
470+
return_result!(V)
471+
}
472+
450473
pub fn walk_block<$($lt,)? V: $trait$(<$lt>)?>(
451474
vis: &mut V,
452475
block: ref_t!(Block)
@@ -1709,20 +1732,6 @@ pub mod visit {
17091732

17101733
visitor.visit_expr_post(expression)
17111734
}
1712-
1713-
pub fn walk_attribute<'a, V: Visitor<'a>>(visitor: &mut V, attr: &'a Attribute) -> V::Result {
1714-
let Attribute { kind, id: _, style: _, span: _ } = attr;
1715-
match kind {
1716-
AttrKind::Normal(normal) => {
1717-
let NormalAttr { item, tokens: _ } = &**normal;
1718-
let AttrItem { unsafety: _, path, args, tokens: _ } = item;
1719-
try_visit!(visitor.visit_path(path, DUMMY_NODE_ID));
1720-
try_visit!(visitor.visit_attr_args(args));
1721-
}
1722-
AttrKind::DocComment(_kind, _sym) => {}
1723-
}
1724-
V::Result::output()
1725-
}
17261735
}
17271736

17281737
pub mod mut_visit {
@@ -1860,24 +1869,6 @@ pub mod mut_visit {
18601869
smallvec![variant]
18611870
}
18621871

1863-
fn walk_attribute<T: MutVisitor>(vis: &mut T, attr: &mut Attribute) {
1864-
let Attribute { kind, id: _, style: _, span } = attr;
1865-
match kind {
1866-
AttrKind::Normal(normal) => {
1867-
let NormalAttr {
1868-
item: AttrItem { unsafety: _, path, args, tokens },
1869-
tokens: attr_tokens,
1870-
} = &mut **normal;
1871-
vis.visit_path(path, DUMMY_NODE_ID);
1872-
vis.visit_attr_args(args);
1873-
visit_lazy_tts(vis, tokens);
1874-
visit_lazy_tts(vis, attr_tokens);
1875-
}
1876-
AttrKind::DocComment(_kind, _sym) => {}
1877-
}
1878-
vis.visit_span(span);
1879-
}
1880-
18811872
fn walk_macro_def<T: MutVisitor>(vis: &mut T, macro_def: &mut MacroDef) {
18821873
let MacroDef { body, macro_rules: _ } = macro_def;
18831874
visit_delim_args(vis, body);

0 commit comments

Comments
 (0)