Skip to content

Commit 04ece08

Browse files
maxcabrajacicmccorm
authored andcommitted
Items
1 parent 76b2f9f commit 04ece08

File tree

6 files changed

+71
-28
lines changed

6 files changed

+71
-28
lines changed

compiler/rustc_ast/src/mut_visit.rs

Lines changed: 43 additions & 9 deletions
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>,
@@ -1387,18 +1399,19 @@ pub fn walk_crate<T: MutVisitor>(vis: &mut T, krate: &mut Crate) {
13871399
vis.visit_span(inject_use_span);
13881400
}
13891401

1390-
pub fn walk_flat_map_item<K: WalkItemKind<Ctxt = ()>>(
1391-
visitor: &mut impl MutVisitor,
1392-
item: P<Item<K>>,
1393-
) -> SmallVec<[P<Item<K>>; 1]> {
1394-
walk_flat_map_assoc_item(visitor, item, ())
1402+
pub fn walk_item(visitor: &mut impl MutVisitor, item: &mut P<Item<impl WalkItemKind<Ctxt = ()>>>) {
1403+
walk_item_ctxt(visitor, item, ())
13951404
}
13961405

1397-
pub fn walk_flat_map_assoc_item<K: WalkItemKind>(
1406+
pub fn walk_assoc_item(visitor: &mut impl MutVisitor, item: &mut P<AssocItem>, ctxt: AssocCtxt) {
1407+
walk_item_ctxt(visitor, item, ctxt)
1408+
}
1409+
1410+
fn walk_item_ctxt<K: WalkItemKind>(
13981411
visitor: &mut impl MutVisitor,
1399-
mut item: P<Item<K>>,
1412+
item: &mut P<Item<K>>,
14001413
ctxt: K::Ctxt,
1401-
) -> SmallVec<[P<Item<K>>; 1]> {
1414+
) {
14021415
let Item { ident, attrs, id, kind, vis, span, tokens } = item.deref_mut();
14031416
visitor.visit_id(id);
14041417
visit_attrs(visitor, attrs);
@@ -1407,6 +1420,27 @@ pub fn walk_flat_map_assoc_item<K: WalkItemKind>(
14071420
kind.walk(*span, *id, ident, vis, ctxt, visitor);
14081421
visit_lazy_tts(visitor, tokens);
14091422
visitor.visit_span(span);
1423+
}
1424+
1425+
pub fn walk_flat_map_item(vis: &mut impl MutVisitor, mut item: P<Item>) -> SmallVec<[P<Item>; 1]> {
1426+
vis.visit_item(&mut item);
1427+
smallvec![item]
1428+
}
1429+
1430+
pub fn walk_flat_map_foreign_item(
1431+
vis: &mut impl MutVisitor,
1432+
mut item: P<ForeignItem>,
1433+
) -> SmallVec<[P<ForeignItem>; 1]> {
1434+
vis.visit_foreign_item(&mut item);
1435+
smallvec![item]
1436+
}
1437+
1438+
pub fn walk_flat_map_assoc_item(
1439+
vis: &mut impl MutVisitor,
1440+
mut item: P<AssocItem>,
1441+
ctxt: AssocCtxt,
1442+
) -> SmallVec<[P<AssocItem>; 1]> {
1443+
vis.visit_assoc_item(&mut item, ctxt);
14101444
smallvec![item]
14111445
}
14121446

compiler/rustc_ast/src/visit.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -463,13 +463,6 @@ impl WalkItemKind for ItemKind {
463463
}
464464
}
465465

466-
pub fn walk_item<'a, V: Visitor<'a>>(
467-
visitor: &mut V,
468-
item: &'a Item<impl WalkItemKind<Ctxt = ()>>,
469-
) -> V::Result {
470-
walk_assoc_item(visitor, item, ())
471-
}
472-
473466
pub fn walk_enum_def<'a, V: Visitor<'a>>(
474467
visitor: &mut V,
475468
EnumDef { variants }: &'a EnumDef,
@@ -931,7 +924,22 @@ impl WalkItemKind for AssocItemKind {
931924
}
932925
}
933926

934-
pub fn walk_assoc_item<'a, V: Visitor<'a>, K: WalkItemKind>(
927+
pub fn walk_item<'a, V: Visitor<'a>>(
928+
visitor: &mut V,
929+
item: &'a Item<impl WalkItemKind<Ctxt = ()>>,
930+
) -> V::Result {
931+
walk_item_ctxt(visitor, item, ())
932+
}
933+
934+
pub fn walk_assoc_item<'a, V: Visitor<'a>>(
935+
visitor: &mut V,
936+
item: &'a AssocItem,
937+
ctxt: AssocCtxt,
938+
) -> V::Result {
939+
walk_item_ctxt(visitor, item, ctxt)
940+
}
941+
942+
fn walk_item_ctxt<'a, V: Visitor<'a>, K: WalkItemKind>(
935943
visitor: &mut V,
936944
item: &'a Item<K>,
937945
ctxt: K::Ctxt,

compiler/rustc_builtin_macros/src/cfg_eval.rs

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 9 additions & 8 deletions
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)