Skip to content

Commit 98decab

Browse files
committed
Unify walk_attribute
1 parent 95149cf commit 98decab

File tree

1 file changed

+25
-35
lines changed

1 file changed

+25
-35
lines changed

compiler/rustc_ast/src/visitors.rs

+25-35
Original file line numberDiff line numberDiff line change
@@ -1293,6 +1293,29 @@ macro_rules! make_ast_visitor {
12931293
return_result!(V)
12941294
}
12951295

1296+
pub fn walk_attribute<$($lt,)? V: $trait$(<$lt>)?>(
1297+
vis: &mut V,
1298+
attr: ref_t!(Attribute)
1299+
) -> result!(V) {
1300+
let Attribute { kind, id:_, style: _, span } = attr;
1301+
match kind {
1302+
AttrKind::Normal(normal) => {
1303+
let NormalAttr {
1304+
item: AttrItem { unsafety, path, args, tokens },
1305+
tokens: attr_tokens,
1306+
} = &$($mut)? **normal;
1307+
visit_safety!(vis, unsafety);
1308+
try_v!(vis.visit_path(path, DUMMY_NODE_ID));
1309+
try_v!(walk_attr_args(vis, args));
1310+
visit_lazy_tts!(vis, tokens);
1311+
visit_lazy_tts!(vis, attr_tokens);
1312+
}
1313+
AttrKind::DocComment(_kind, _sym) => {}
1314+
}
1315+
try_v!(visit_span!(vis, span));
1316+
return_result!(V)
1317+
}
1318+
12961319
pub fn walk_assoc_item<$($lt,)? V: $trait$(<$lt>)?>(
12971320
visitor: &mut V,
12981321
item: ref_t!(Item<AssocItemKind>),
@@ -1882,20 +1905,6 @@ pub mod visit {
18821905
visitor.visit_expr_post(expression)
18831906
}
18841907

1885-
pub fn walk_attribute<'a, V: Visitor<'a>>(visitor: &mut V, attr: &'a Attribute) -> V::Result {
1886-
let Attribute { kind, id: _, style: _, span: _ } = attr;
1887-
match kind {
1888-
AttrKind::Normal(normal) => {
1889-
let NormalAttr { item, tokens: _ } = &**normal;
1890-
let AttrItem { unsafety: _, path, args, tokens: _ } = item;
1891-
try_visit!(visitor.visit_path(path, DUMMY_NODE_ID));
1892-
try_visit!(walk_attr_args(visitor, args));
1893-
}
1894-
AttrKind::DocComment(_kind, _sym) => {}
1895-
}
1896-
V::Result::output()
1897-
}
1898-
18991908
pub fn walk_attr_args<'a, V: Visitor<'a>>(visitor: &mut V, args: &'a AttrArgs) -> V::Result {
19001909
match args {
19011910
AttrArgs::Empty => {}
@@ -2011,8 +2020,7 @@ pub mod mut_visit {
20112020
exprs.flat_map_in_place(|expr| vis.filter_map_expr(expr))
20122021
}
20132022

2014-
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
2015-
fn visit_attr_args<T: MutVisitor>(vis: &mut T, args: &mut AttrArgs) {
2023+
fn walk_attr_args<T: MutVisitor>(vis: &mut T, args: &mut AttrArgs) {
20162024
match args {
20172025
AttrArgs::Empty => {}
20182026
AttrArgs::Delimited(args) => visit_delim_args(vis, args),
@@ -2038,24 +2046,6 @@ pub mod mut_visit {
20382046
vis.visit_span(close);
20392047
}
20402048

2041-
fn walk_attribute<T: MutVisitor>(vis: &mut T, attr: &mut Attribute) {
2042-
let Attribute { kind, id: _, style: _, span } = attr;
2043-
match kind {
2044-
AttrKind::Normal(normal) => {
2045-
let NormalAttr {
2046-
item: AttrItem { unsafety: _, path, args, tokens },
2047-
tokens: attr_tokens,
2048-
} = &mut **normal;
2049-
vis.visit_path(path, DUMMY_NODE_ID);
2050-
visit_attr_args(vis, args);
2051-
visit_lazy_tts(vis, tokens);
2052-
visit_lazy_tts(vis, attr_tokens);
2053-
}
2054-
AttrKind::DocComment(_kind, _sym) => {}
2055-
}
2056-
vis.visit_span(span);
2057-
}
2058-
20592049
fn walk_mac<T: MutVisitor>(vis: &mut T, mac: &mut MacCall) {
20602050
let MacCall { path, args } = mac;
20612051
vis.visit_path(path, DUMMY_NODE_ID);
@@ -2222,7 +2212,7 @@ pub mod mut_visit {
22222212
token::NtMeta(item) => {
22232213
let AttrItem { unsafety: _, path, args, tokens } = item.deref_mut();
22242214
vis.visit_path(path, DUMMY_NODE_ID);
2225-
visit_attr_args(vis, args);
2215+
walk_attr_args(vis, args);
22262216
visit_lazy_tts(vis, tokens);
22272217
}
22282218
token::NtPath(path) => vis.visit_path(path, DUMMY_NODE_ID),

0 commit comments

Comments
 (0)