Skip to content

Commit 3d40732

Browse files
committed
Make mut_visit::WalkItemKind the same as visit::WalkItemKind
1 parent 952537d commit 3d40732

File tree

2 files changed

+85
-77
lines changed

2 files changed

+85
-77
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 83 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1788,8 +1788,8 @@ pub mod mut_visit {
17881788
}
17891789
}
17901790

1791-
pub trait WalkItemKind {
1792-
fn walk(&mut self, span: Span, id: NodeId, visitor: &mut impl MutVisitor);
1791+
pub trait WalkItemKind: Sized {
1792+
fn walk(item: &mut Item<Self>, visitor: &mut impl MutVisitor);
17931793
}
17941794

17951795
make_ast_visitor!(MutVisitor, mut);
@@ -2279,69 +2279,65 @@ pub mod mut_visit {
22792279
}
22802280
}
22812281

2282-
pub fn walk_item_kind(
2283-
kind: &mut impl WalkItemKind,
2284-
span: Span,
2285-
id: NodeId,
2286-
vis: &mut impl MutVisitor,
2287-
) {
2288-
kind.walk(span, id, vis)
2289-
}
2290-
22912282
impl WalkItemKind for ItemKind {
2292-
fn walk(&mut self, span: Span, id: NodeId, vis: &mut impl MutVisitor) {
2293-
match self {
2283+
fn walk(item: &mut Item<Self>, visitor: &mut impl MutVisitor) {
2284+
let Item { attrs, id, span, vis, ident, kind, tokens } = item;
2285+
visitor.visit_id(id);
2286+
visit_attrs(visitor, attrs);
2287+
visitor.visit_vis(vis);
2288+
visitor.visit_ident(ident);
2289+
match kind {
22942290
ItemKind::ExternCrate(_orig_name) => {}
2295-
ItemKind::Use(use_tree) => vis.visit_use_tree(use_tree, id, false),
2291+
ItemKind::Use(use_tree) => visitor.visit_use_tree(use_tree, *id, false),
22962292
ItemKind::Static(box StaticItem { ty, safety: _, mutability: _, expr }) => {
2297-
vis.visit_ty(ty);
2298-
visit_opt(expr, |expr| vis.visit_expr(expr));
2293+
visitor.visit_ty(ty);
2294+
visit_opt(expr, |expr| visitor.visit_expr(expr));
22992295
}
23002296
ItemKind::Const(item) => {
2301-
visit_const_item(item, vis);
2297+
visit_const_item(item, visitor);
23022298
}
23032299
ItemKind::Fn(box Fn { defaultness, generics, sig, body }) => {
2304-
visit_defaultness(vis, defaultness);
2305-
vis.visit_fn(FnKind::Fn(sig, generics, body), span, id);
2300+
visit_defaultness(visitor, defaultness);
2301+
visitor.visit_fn(FnKind::Fn(sig, generics, body), *span, *id);
23062302
}
23072303
ItemKind::Mod(safety, mod_kind) => {
2308-
visit_safety(vis, safety);
2304+
visit_safety(visitor, safety);
23092305
match mod_kind {
23102306
ModKind::Loaded(
23112307
items,
23122308
_inline,
23132309
ModSpans { inner_span, inject_use_span },
23142310
) => {
2315-
items.flat_map_in_place(|item| vis.flat_map_item(item));
2316-
vis.visit_span(inner_span);
2317-
vis.visit_span(inject_use_span);
2311+
items.flat_map_in_place(|item| visitor.flat_map_item(item));
2312+
visitor.visit_span(inner_span);
2313+
visitor.visit_span(inject_use_span);
23182314
}
23192315
ModKind::Unloaded => {}
23202316
}
23212317
}
2322-
ItemKind::ForeignMod(nm) => vis.visit_foreign_mod(nm),
2323-
ItemKind::GlobalAsm(asm) => vis.visit_inline_asm(asm),
2318+
ItemKind::ForeignMod(nm) => visitor.visit_foreign_mod(nm),
2319+
ItemKind::GlobalAsm(asm) => visitor.visit_inline_asm(asm),
23242320
ItemKind::TyAlias(box TyAlias {
23252321
defaultness,
23262322
generics,
23272323
where_clauses,
23282324
bounds,
23292325
ty,
23302326
}) => {
2331-
visit_defaultness(vis, defaultness);
2332-
vis.visit_generics(generics);
2333-
visit_bounds(vis, bounds, BoundKind::Bound);
2334-
visit_opt(ty, |ty| vis.visit_ty(ty));
2335-
walk_ty_alias_where_clauses(vis, where_clauses);
2327+
visit_defaultness(visitor, defaultness);
2328+
visitor.visit_generics(generics);
2329+
visit_bounds(visitor, bounds, BoundKind::Bound);
2330+
visit_opt(ty, |ty| visitor.visit_ty(ty));
2331+
walk_ty_alias_where_clauses(visitor, where_clauses);
23362332
}
23372333
ItemKind::Enum(enum_def, generics) => {
2338-
vis.visit_generics(generics);
2339-
vis.visit_enum_def(enum_def);
2334+
visitor.visit_generics(generics);
2335+
visitor.visit_enum_def(enum_def);
23402336
}
23412337
ItemKind::Struct(variant_data, generics)
23422338
| ItemKind::Union(variant_data, generics) => {
2343-
vis.visit_generics(generics);
2344-
vis.visit_variant_data(variant_data);
2339+
visitor.visit_generics(generics);
2340+
visitor.visit_variant_data(variant_data);
23452341
}
23462342
ItemKind::Impl(box Impl {
23472343
defaultness,
@@ -2353,27 +2349,27 @@ pub mod mut_visit {
23532349
self_ty,
23542350
items,
23552351
}) => {
2356-
visit_defaultness(vis, defaultness);
2357-
visit_safety(vis, safety);
2358-
vis.visit_generics(generics);
2359-
visit_constness(vis, constness);
2360-
visit_polarity(vis, polarity);
2361-
visit_opt(of_trait, |trait_ref| vis.visit_trait_ref(trait_ref));
2362-
vis.visit_ty(self_ty);
2363-
items.flat_map_in_place(|item| vis.flat_map_assoc_item(item, AssocCtxt::Impl));
2352+
visit_defaultness(visitor, defaultness);
2353+
visit_safety(visitor, safety);
2354+
visitor.visit_generics(generics);
2355+
visit_constness(visitor, constness);
2356+
visit_polarity(visitor, polarity);
2357+
visit_opt(of_trait, |trait_ref| visitor.visit_trait_ref(trait_ref));
2358+
visitor.visit_ty(self_ty);
2359+
items.flat_map_in_place(|item| visitor.flat_map_assoc_item(item, AssocCtxt::Impl));
23642360
}
23652361
ItemKind::Trait(box Trait { safety, is_auto: _, generics, bounds, items }) => {
2366-
visit_safety(vis, safety);
2367-
vis.visit_generics(generics);
2368-
visit_bounds(vis, bounds, BoundKind::Bound);
2369-
items.flat_map_in_place(|item| vis.flat_map_assoc_item(item, AssocCtxt::Trait));
2362+
visit_safety(visitor, safety);
2363+
visitor.visit_generics(generics);
2364+
visit_bounds(visitor, bounds, BoundKind::Bound);
2365+
items.flat_map_in_place(|item| visitor.flat_map_assoc_item(item, AssocCtxt::Trait));
23702366
}
23712367
ItemKind::TraitAlias(generics, bounds) => {
2372-
vis.visit_generics(generics);
2373-
visit_bounds(vis, bounds, BoundKind::Bound);
2368+
visitor.visit_generics(generics);
2369+
visit_bounds(visitor, bounds, BoundKind::Bound);
23742370
}
2375-
ItemKind::MacCall(m) => vis.visit_mac_call(m),
2376-
ItemKind::MacroDef(def) => vis.visit_macro_def(def),
2371+
ItemKind::MacCall(m) => visitor.visit_mac_call(m),
2372+
ItemKind::MacroDef(def) => visitor.visit_macro_def(def),
23772373
ItemKind::Delegation(box Delegation {
23782374
id,
23792375
qself,
@@ -2382,44 +2378,51 @@ pub mod mut_visit {
23822378
body,
23832379
from_glob: _,
23842380
}) => {
2385-
vis.visit_id(id);
2386-
vis.visit_qself(qself);
2387-
vis.visit_path(path, *id);
2381+
visitor.visit_id(id);
2382+
visitor.visit_qself(qself);
2383+
visitor.visit_path(path, *id);
23882384
if let Some(rename) = rename {
2389-
vis.visit_ident(rename);
2385+
visitor.visit_ident(rename);
23902386
}
23912387
if let Some(body) = body {
2392-
vis.visit_block(body);
2388+
visitor.visit_block(body);
23932389
}
23942390
}
23952391
ItemKind::DelegationMac(box DelegationMac { qself, prefix, suffixes, body }) => {
2396-
vis.visit_qself(qself);
2397-
vis.visit_path(prefix, id);
2392+
visitor.visit_qself(qself);
2393+
visitor.visit_path(prefix, *id);
23982394
if let Some(suffixes) = suffixes {
23992395
for (ident, rename) in suffixes {
2400-
vis.visit_ident(ident);
2396+
visitor.visit_ident(ident);
24012397
if let Some(rename) = rename {
2402-
vis.visit_ident(rename);
2398+
visitor.visit_ident(rename);
24032399
}
24042400
}
24052401
}
24062402
if let Some(body) = body {
2407-
vis.visit_block(body);
2403+
visitor.visit_block(body);
24082404
}
24092405
}
24102406
}
2407+
visit_lazy_tts(visitor, tokens);
2408+
visitor.visit_span(span);
24112409
}
24122410
}
24132411

24142412
impl WalkItemKind for AssocItemKind {
2415-
fn walk(&mut self, span: Span, id: NodeId, visitor: &mut impl MutVisitor) {
2416-
match self {
2413+
fn walk(item: &mut Item<Self>, visitor: &mut impl MutVisitor) {
2414+
let Item { attrs, id, span, vis, ident, kind, tokens } = item;
2415+
visitor.visit_id(id);
2416+
visit_attrs(visitor, attrs);
2417+
visitor.visit_vis(vis);
2418+
visitor.visit_ident(ident);
2419+
match kind {
24172420
AssocItemKind::Const(item) => {
24182421
visit_const_item(item, visitor);
24192422
}
24202423
AssocItemKind::Fn(box Fn { defaultness, generics, sig, body }) => {
24212424
visit_defaultness(visitor, defaultness);
2422-
visitor.visit_fn(FnKind::Fn(sig, generics, body), span, id);
2425+
visitor.visit_fn(FnKind::Fn(sig, generics, body), *span, *id);
24232426
}
24242427
AssocItemKind::Type(box TyAlias {
24252428
defaultness,
@@ -2460,7 +2463,7 @@ pub mod mut_visit {
24602463
body,
24612464
}) => {
24622465
visitor.visit_qself(qself);
2463-
visitor.visit_path(prefix, id);
2466+
visitor.visit_path(prefix, *id);
24642467
if let Some(suffixes) = suffixes {
24652468
for (ident, rename) in suffixes {
24662469
visitor.visit_ident(ident);
@@ -2474,6 +2477,8 @@ pub mod mut_visit {
24742477
}
24752478
}
24762479
}
2480+
visit_lazy_tts(visitor, tokens);
2481+
visitor.visit_span(span);
24772482
}
24782483
}
24792484

@@ -2494,32 +2499,33 @@ pub mod mut_visit {
24942499
visit_safety(vis, safety);
24952500
}
24962501

2502+
pub fn walk_item<K: WalkItemKind>(visitor: &mut impl MutVisitor, item: &mut Item<K>) {
2503+
K::walk(item, visitor);
2504+
}
24972505
/// Mutates one item, returning the item again.
24982506
pub fn walk_flat_map_item<K: WalkItemKind>(
24992507
visitor: &mut impl MutVisitor,
25002508
mut item: P<Item<K>>,
25012509
) -> SmallVec<[P<Item<K>>; 1]> {
2502-
let Item { ident, attrs, id, kind, vis, span, tokens } = item.deref_mut();
2503-
visitor.visit_id(id);
2504-
visit_attrs(visitor, attrs);
2505-
visitor.visit_vis(vis);
2506-
visitor.visit_ident(ident);
2507-
kind.walk(*span, *id, visitor);
2508-
visit_lazy_tts(visitor, tokens);
2509-
visitor.visit_span(span);
2510+
walk_item(visitor, item.deref_mut());
25102511
smallvec![item]
25112512
}
25122513

25132514
impl WalkItemKind for ForeignItemKind {
2514-
fn walk(&mut self, span: Span, id: NodeId, visitor: &mut impl MutVisitor) {
2515-
match self {
2515+
fn walk(item: &mut Item<Self>, visitor: &mut impl MutVisitor) {
2516+
let Item { attrs, id, span, vis, ident, kind, tokens } = item;
2517+
visitor.visit_id(id);
2518+
visit_attrs(visitor, attrs);
2519+
visitor.visit_vis(vis);
2520+
visitor.visit_ident(ident);
2521+
match kind {
25162522
ForeignItemKind::Static(box StaticItem { ty, mutability: _, expr, safety: _ }) => {
25172523
visitor.visit_ty(ty);
25182524
visit_opt(expr, |expr| visitor.visit_expr(expr));
25192525
}
25202526
ForeignItemKind::Fn(box Fn { defaultness, generics, sig, body }) => {
25212527
visit_defaultness(visitor, defaultness);
2522-
visitor.visit_fn(FnKind::Fn(sig, generics, body), span, id);
2528+
visitor.visit_fn(FnKind::Fn(sig, generics, body), *span, *id);
25232529
}
25242530
ForeignItemKind::TyAlias(box TyAlias {
25252531
defaultness,
@@ -2536,6 +2542,8 @@ pub mod mut_visit {
25362542
}
25372543
ForeignItemKind::MacCall(mac) => visitor.visit_mac_call(mac),
25382544
}
2545+
visit_lazy_tts(visitor, tokens);
2546+
visitor.visit_span(span);
25392547
}
25402548
}
25412549

compiler/rustc_builtin_macros/src/test_harness.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::{iter, mem};
44

55
use rustc_ast as ast;
66
use rustc_ast::entry::EntryPointType;
7-
use rustc_ast::mut_visit::*;
7+
use rustc_ast::mut_visit::{self, *};
88
use rustc_ast::ptr::P;
99
use rustc_ast::visit::{walk_item, Visitor};
1010
use rustc_ast::{attr, ModKind};
@@ -144,7 +144,7 @@ impl<'a> MutVisitor for TestHarnessGenerator<'a> {
144144
item.kind
145145
{
146146
let prev_tests = mem::take(&mut self.tests);
147-
walk_item_kind(&mut item.kind, item.span, item.id, self);
147+
mut_visit::walk_item(self, item);
148148
self.add_test_cases(item.id, span, prev_tests);
149149
} else {
150150
// But in those cases, we emit a lint to warn the user of these missing tests.

0 commit comments

Comments
 (0)