Skip to content

Commit 652a6b6

Browse files
committed
Add {visit,walk}_constness
1 parent 71fb9eb commit 652a6b6

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ macro_rules! make_ast_visitor {
327327
make_visit!{Block; visit_block, walk_block}
328328
make_visit!{CaptureBy; visit_capture_by, walk_capture_by}
329329
make_visit!{ClosureBinder; visit_closure_binder, walk_closure_binder}
330+
make_visit!{Const; visit_constness, walk_constness}
330331
make_visit!{CoroutineKind; visit_coroutine_kind, walk_coroutine_kind}
331332
make_visit!{Crate; visit_crate, walk_crate}
332333
make_visit!{EnumDef; visit_enum_def, walk_enum_def}
@@ -533,6 +534,19 @@ macro_rules! make_ast_visitor {
533534
return_result!(V)
534535
}
535536

537+
pub fn walk_constness<$($lt,)? V: $trait$(<$lt>)?>(
538+
vis: &mut V,
539+
constness: ref_t!(Const)
540+
) -> result!(V) {
541+
match constness {
542+
Const::Yes(span) => {
543+
try_v!(visit_span!(vis, span));
544+
}
545+
Const::No => {}
546+
}
547+
return_result!(V)
548+
}
549+
536550
pub fn walk_coroutine_kind<$($lt,)? V: $trait$(<$lt>)?>(
537551
vis: &mut V,
538552
coroutine_kind: ref_t!(CoroutineKind)
@@ -1454,14 +1468,15 @@ pub mod visit {
14541468
defaultness: _,
14551469
safety,
14561470
generics,
1457-
constness: _,
1471+
constness,
14581472
polarity: _,
14591473
of_trait,
14601474
self_ty,
14611475
items,
14621476
}) => {
14631477
try_visit!(visitor.visit_safety(safety));
14641478
try_visit!(visitor.visit_generics(generics));
1479+
try_visit!(visitor.visit_constness(constness));
14651480
visit_opt!(visitor, visit_trait_ref, of_trait);
14661481
try_visit!(visitor.visit_ty(self_ty));
14671482
walk_list!(visitor, visit_assoc_item, items, AssocCtxt::Impl);
@@ -1713,13 +1728,14 @@ pub mod visit {
17131728
binder,
17141729
capture_clause,
17151730
coroutine_kind,
1716-
constness: _,
1731+
constness,
17171732
movability: _,
17181733
fn_decl,
17191734
body,
17201735
fn_decl_span: _,
17211736
fn_arg_span: _,
17221737
}) => {
1738+
try_visit!(visitor.visit_constness(constness));
17231739
try_visit!(visitor.visit_capture_by(capture_clause));
17241740
try_visit!(visitor.visit_fn(
17251741
FnKind::Closure(binder, coroutine_kind, fn_decl, body),
@@ -2107,14 +2123,6 @@ pub mod mut_visit {
21072123
}
21082124
}
21092125

2110-
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
2111-
fn visit_constness<T: MutVisitor>(vis: &mut T, constness: &mut Const) {
2112-
match constness {
2113-
Const::Yes(span) => vis.visit_span(span),
2114-
Const::No => {}
2115-
}
2116-
}
2117-
21182126
pub fn walk_flat_map_generic_param<T: MutVisitor>(
21192127
vis: &mut T,
21202128
mut param: GenericParam,
@@ -2222,7 +2230,7 @@ pub mod mut_visit {
22222230
visit_defaultness(visitor, defaultness);
22232231
visitor.visit_safety(safety);
22242232
visitor.visit_generics(generics);
2225-
visit_constness(visitor, constness);
2233+
visitor.visit_constness(constness);
22262234
visit_polarity(visitor, polarity);
22272235
visit_opt(of_trait, |trait_ref| visitor.visit_trait_ref(trait_ref));
22282236
visitor.visit_ty(self_ty);
@@ -2293,7 +2301,7 @@ pub mod mut_visit {
22932301

22942302
fn walk_fn_header<T: MutVisitor>(vis: &mut T, header: &mut FnHeader) {
22952303
let FnHeader { safety, coroutine_kind, constness, ext: _ } = header;
2296-
visit_constness(vis, constness);
2304+
vis.visit_constness(constness);
22972305
coroutine_kind.as_mut().map(|coroutine_kind| vis.visit_coroutine_kind(coroutine_kind));
22982306
vis.visit_safety(safety);
22992307
}
@@ -2519,7 +2527,7 @@ pub mod mut_visit {
25192527
fn_decl_span,
25202528
fn_arg_span,
25212529
}) => {
2522-
visit_constness(vis, constness);
2530+
vis.visit_constness(constness);
25232531
vis.visit_capture_by(capture_clause);
25242532
vis.visit_fn(FnKind::Closure(binder, coroutine_kind, fn_decl, body), *span, *id);
25252533
vis.visit_span(fn_decl_span);

0 commit comments

Comments
 (0)