Skip to content

Commit 1dc1236

Browse files
committed
Items
1 parent 5c2de73 commit 1dc1236

File tree

6 files changed

+71
-28
lines changed

6 files changed

+71
-28
lines changed

compiler/rustc_ast/src/mut_visit.rs

+43-9
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,16 @@ pub trait MutVisitor: Sized {
104104
walk_use_tree(self, use_tree);
105105
}
106106

107+
fn visit_foreign_item(&mut self, ni: &mut P<ForeignItem>) {
108+
walk_item(self, ni);
109+
}
110+
107111
fn flat_map_foreign_item(&mut self, ni: P<ForeignItem>) -> SmallVec<[P<ForeignItem>; 1]> {
108-
walk_flat_map_item(self, ni)
112+
walk_flat_map_foreign_item(self, ni)
113+
}
114+
115+
fn visit_item(&mut self, i: &mut P<Item>) {
116+
walk_item(self, i);
109117
}
110118

111119
fn flat_map_item(&mut self, i: P<Item>) -> SmallVec<[P<Item>; 1]> {
@@ -124,6 +132,10 @@ pub trait MutVisitor: Sized {
124132
walk_flat_map_field_def(self, fd)
125133
}
126134

135+
fn visit_assoc_item(&mut self, i: &mut P<AssocItem>, ctxt: AssocCtxt) {
136+
walk_assoc_item(self, i, ctxt)
137+
}
138+
127139
fn flat_map_assoc_item(
128140
&mut self,
129141
i: P<AssocItem>,
@@ -1383,18 +1395,19 @@ pub fn walk_crate<T: MutVisitor>(vis: &mut T, krate: &mut Crate) {
13831395
vis.visit_span(inject_use_span);
13841396
}
13851397

1386-
pub fn walk_flat_map_item<K: WalkItemKind<Ctxt = ()>>(
1387-
visitor: &mut impl MutVisitor,
1388-
item: P<Item<K>>,
1389-
) -> SmallVec<[P<Item<K>>; 1]> {
1390-
walk_flat_map_assoc_item(visitor, item, ())
1398+
pub fn walk_item(visitor: &mut impl MutVisitor, item: &mut P<Item<impl WalkItemKind<Ctxt = ()>>>) {
1399+
walk_item_ctxt(visitor, item, ())
13911400
}
13921401

1393-
pub fn walk_flat_map_assoc_item<K: WalkItemKind>(
1402+
pub fn walk_assoc_item(visitor: &mut impl MutVisitor, item: &mut P<AssocItem>, ctxt: AssocCtxt) {
1403+
walk_item_ctxt(visitor, item, ctxt)
1404+
}
1405+
1406+
fn walk_item_ctxt<K: WalkItemKind>(
13941407
visitor: &mut impl MutVisitor,
1395-
mut item: P<Item<K>>,
1408+
item: &mut P<Item<K>>,
13961409
ctxt: K::Ctxt,
1397-
) -> SmallVec<[P<Item<K>>; 1]> {
1410+
) {
13981411
let Item { ident, attrs, id, kind, vis, span, tokens } = item.deref_mut();
13991412
visitor.visit_id(id);
14001413
visit_attrs(visitor, attrs);
@@ -1403,6 +1416,27 @@ pub fn walk_flat_map_assoc_item<K: WalkItemKind>(
14031416
kind.walk(*span, *id, ident, vis, ctxt, visitor);
14041417
visit_lazy_tts(visitor, tokens);
14051418
visitor.visit_span(span);
1419+
}
1420+
1421+
pub fn walk_flat_map_item(vis: &mut impl MutVisitor, mut item: P<Item>) -> SmallVec<[P<Item>; 1]> {
1422+
vis.visit_item(&mut item);
1423+
smallvec![item]
1424+
}
1425+
1426+
pub fn walk_flat_map_foreign_item(
1427+
vis: &mut impl MutVisitor,
1428+
mut item: P<ForeignItem>,
1429+
) -> SmallVec<[P<ForeignItem>; 1]> {
1430+
vis.visit_foreign_item(&mut item);
1431+
smallvec![item]
1432+
}
1433+
1434+
pub fn walk_flat_map_assoc_item(
1435+
vis: &mut impl MutVisitor,
1436+
mut item: P<AssocItem>,
1437+
ctxt: AssocCtxt,
1438+
) -> SmallVec<[P<AssocItem>; 1]> {
1439+
vis.visit_assoc_item(&mut item, ctxt);
14061440
smallvec![item]
14071441
}
14081442

compiler/rustc_ast/src/visit.rs

+16-8
Original file line numberDiff line numberDiff line change
@@ -457,13 +457,6 @@ impl WalkItemKind for ItemKind {
457457
}
458458
}
459459

460-
pub fn walk_item<'a, V: Visitor<'a>>(
461-
visitor: &mut V,
462-
item: &'a Item<impl WalkItemKind<Ctxt = ()>>,
463-
) -> V::Result {
464-
walk_assoc_item(visitor, item, ())
465-
}
466-
467460
pub fn walk_enum_def<'a, V: Visitor<'a>>(
468461
visitor: &mut V,
469462
EnumDef { variants }: &'a EnumDef,
@@ -925,7 +918,22 @@ impl WalkItemKind for AssocItemKind {
925918
}
926919
}
927920

928-
pub fn walk_assoc_item<'a, V: Visitor<'a>, K: WalkItemKind>(
921+
pub fn walk_item<'a, V: Visitor<'a>>(
922+
visitor: &mut V,
923+
item: &'a Item<impl WalkItemKind<Ctxt = ()>>,
924+
) -> V::Result {
925+
walk_item_ctxt(visitor, item, ())
926+
}
927+
928+
pub fn walk_assoc_item<'a, V: Visitor<'a>>(
929+
visitor: &mut V,
930+
item: &'a AssocItem,
931+
ctxt: AssocCtxt,
932+
) -> V::Result {
933+
walk_item_ctxt(visitor, item, ctxt)
934+
}
935+
936+
fn walk_item_ctxt<'a, V: Visitor<'a>, K: WalkItemKind>(
929937
visitor: &mut V,
930938
item: &'a Item<K>,
931939
ctxt: K::Ctxt,

compiler/rustc_builtin_macros/src/cfg_eval.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ impl MutVisitor for CfgEval<'_> {
215215
foreign_item: P<ast::ForeignItem>,
216216
) -> SmallVec<[P<ast::ForeignItem>; 1]> {
217217
let foreign_item = configure!(self, foreign_item);
218-
mut_visit::walk_flat_map_item(self, foreign_item)
218+
mut_visit::walk_flat_map_foreign_item(self, foreign_item)
219219
}
220220

221221
fn flat_map_arm(&mut self, arm: ast::Arm) -> SmallVec<[ast::Arm; 1]> {

compiler/rustc_expand/src/expand.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1382,7 +1382,7 @@ impl InvocationCollectorNode for P<ast::ForeignItem> {
13821382
fragment.make_foreign_items()
13831383
}
13841384
fn walk_flat_map<V: MutVisitor>(self, visitor: &mut V) -> Self::OutputTy {
1385-
walk_flat_map_item(visitor, self)
1385+
walk_flat_map_foreign_item(visitor, self)
13861386
}
13871387
fn is_mac_call(&self) -> bool {
13881388
matches!(self.kind, ForeignItemKind::MacCall(..))

compiler/rustc_expand/src/placeholders.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ impl MutVisitor for PlaceholderExpander {
296296
) -> SmallVec<[P<ast::ForeignItem>; 1]> {
297297
match item.kind {
298298
ast::ForeignItemKind::MacCall(_) => self.remove(item.id).make_foreign_items(),
299-
_ => walk_flat_map_item(self, item),
299+
_ => walk_flat_map_foreign_item(self, item),
300300
}
301301
}
302302

compiler/rustc_lint/src/early.rs

+9-8
Original file line numberDiff line numberDiff line change
@@ -230,15 +230,16 @@ impl<'a, T: EarlyLintPass> ast_visit::Visitor<'a> for EarlyContextAndPass<'a, T>
230230
}
231231

232232
fn visit_assoc_item(&mut self, item: &'a ast::AssocItem, ctxt: ast_visit::AssocCtxt) {
233-
self.with_lint_attrs(item.id, &item.attrs, |cx| match ctxt {
234-
ast_visit::AssocCtxt::Trait => {
235-
lint_callback!(cx, check_trait_item, item);
236-
ast_visit::walk_assoc_item(cx, item, ctxt);
237-
}
238-
ast_visit::AssocCtxt::Impl => {
239-
lint_callback!(cx, check_impl_item, item);
240-
ast_visit::walk_assoc_item(cx, item, ctxt);
233+
self.with_lint_attrs(item.id, &item.attrs, |cx| {
234+
match ctxt {
235+
ast_visit::AssocCtxt::Trait => {
236+
lint_callback!(cx, check_trait_item, item);
237+
}
238+
ast_visit::AssocCtxt::Impl => {
239+
lint_callback!(cx, check_impl_item, item);
240+
}
241241
}
242+
ast_visit::walk_assoc_item(cx, item, ctxt);
242243
});
243244
}
244245

0 commit comments

Comments
 (0)