Skip to content

Commit 6613670

Browse files
committed
Unify walk_attribute
1 parent 28e159e commit 6613670

File tree

1 file changed

+25
-35
lines changed

1 file changed

+25
-35
lines changed

Diff for: compiler/rustc_ast/src/visitors.rs

+25-35
Original file line numberDiff line numberDiff line change
@@ -1301,6 +1301,29 @@ macro_rules! make_ast_visitor {
13011301
return_result!(V)
13021302
}
13031303

1304+
pub fn walk_attribute<$($lt,)? V: $trait$(<$lt>)?>(
1305+
vis: &mut V,
1306+
attr: ref_t!(Attribute)
1307+
) -> result!(V) {
1308+
let Attribute { kind, id:_, style: _, span } = attr;
1309+
match kind {
1310+
AttrKind::Normal(normal) => {
1311+
let NormalAttr {
1312+
item: AttrItem { unsafety, path, args, tokens },
1313+
tokens: attr_tokens,
1314+
} = &$($mut)? **normal;
1315+
visit_safety!(vis, unsafety);
1316+
try_v!(vis.visit_path(path, DUMMY_NODE_ID));
1317+
try_v!(walk_attr_args(vis, args));
1318+
visit_lazy_tts!(vis, tokens);
1319+
visit_lazy_tts!(vis, attr_tokens);
1320+
}
1321+
AttrKind::DocComment(_kind, _sym) => {}
1322+
}
1323+
try_v!(visit_span!(vis, span));
1324+
return_result!(V)
1325+
}
1326+
13041327
pub fn walk_assoc_item<$($lt,)? V: $trait$(<$lt>)?>(
13051328
visitor: &mut V,
13061329
item: ref_t!(Item<AssocItemKind>),
@@ -1880,20 +1903,6 @@ pub mod visit {
18801903
visitor.visit_expr_post(expression)
18811904
}
18821905

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

2012-
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
2013-
fn visit_attr_args<T: MutVisitor>(vis: &mut T, args: &mut AttrArgs) {
2021+
fn walk_attr_args<T: MutVisitor>(vis: &mut T, args: &mut AttrArgs) {
20142022
match args {
20152023
AttrArgs::Empty => {}
20162024
AttrArgs::Delimited(args) => visit_delim_args(vis, args),
@@ -2036,24 +2044,6 @@ pub mod mut_visit {
20362044
vis.visit_span(close);
20372045
}
20382046

2039-
fn walk_attribute<T: MutVisitor>(vis: &mut T, attr: &mut Attribute) {
2040-
let Attribute { kind, id: _, style: _, span } = attr;
2041-
match kind {
2042-
AttrKind::Normal(normal) => {
2043-
let NormalAttr {
2044-
item: AttrItem { unsafety: _, path, args, tokens },
2045-
tokens: attr_tokens,
2046-
} = &mut **normal;
2047-
vis.visit_path(path, DUMMY_NODE_ID);
2048-
visit_attr_args(vis, args);
2049-
visit_lazy_tts(vis, tokens);
2050-
visit_lazy_tts(vis, attr_tokens);
2051-
}
2052-
AttrKind::DocComment(_kind, _sym) => {}
2053-
}
2054-
vis.visit_span(span);
2055-
}
2056-
20572047
fn walk_mac<T: MutVisitor>(vis: &mut T, mac: &mut MacCall) {
20582048
let MacCall { path, args } = mac;
20592049
vis.visit_path(path, DUMMY_NODE_ID);
@@ -2220,7 +2210,7 @@ pub mod mut_visit {
22202210
token::NtMeta(item) => {
22212211
let AttrItem { unsafety: _, path, args, tokens } = item.deref_mut();
22222212
vis.visit_path(path, DUMMY_NODE_ID);
2223-
visit_attr_args(vis, args);
2213+
walk_attr_args(vis, args);
22242214
visit_lazy_tts(vis, tokens);
22252215
}
22262216
token::NtPath(path) => vis.visit_path(path, DUMMY_NODE_ID),

0 commit comments

Comments
 (0)