@@ -349,6 +349,7 @@ macro_rules! make_ast_visitor {
349
349
make_visit!{ PathSegment ; visit_path_segment, walk_path_segment}
350
350
make_visit!{ PolyTraitRef ; visit_poly_trait_ref, walk_poly_trait_ref}
351
351
make_visit!{ PreciseCapturingArg ; visit_precise_capturing_arg, walk_precise_capturing_arg}
352
+ make_visit!{ Safety ; visit_safety, walk_safety}
352
353
make_visit!{ TraitRef ; visit_trait_ref, walk_trait_ref}
353
354
make_visit!{ UseTree , id: NodeId , _ nested: bool ; visit_use_tree, walk_use_tree}
354
355
make_visit!{ Variant ; visit_variant, walk_variant}
@@ -857,6 +858,20 @@ macro_rules! make_ast_visitor {
857
858
return_result!( V )
858
859
}
859
860
861
+ pub fn walk_safety<$( $lt, ) ? V : $trait$( <$lt>) ?>(
862
+ vis: & mut V ,
863
+ safety: ref_t!( Safety )
864
+ ) -> result!( V ) {
865
+ match safety {
866
+ Safety :: Unsafe ( span)
867
+ | Safety :: Safe ( span) => {
868
+ try_v!( visit_span!( vis, span) )
869
+ }
870
+ Safety :: Default => { }
871
+ }
872
+ return_result!( V )
873
+ }
874
+
860
875
pub fn walk_trait_ref<$( $lt, ) ? V : $trait$( <$lt>) ?>(
861
876
vis: & mut V ,
862
877
trait_ref: ref_t!( TraitRef )
@@ -1183,13 +1198,17 @@ pub mod visit {
1183
1198
let kind = FnKind :: Fn ( FnCtxt :: Free , ident, sig, vis, generics, body. as_deref ( ) ) ;
1184
1199
try_visit ! ( visitor. visit_fn( kind, * span, * id) ) ;
1185
1200
}
1186
- ItemKind :: Mod ( _unsafety, mod_kind) => match mod_kind {
1187
- ModKind :: Loaded ( items, _inline, _inner_span) => {
1188
- walk_list ! ( visitor, visit_item, items) ;
1201
+ ItemKind :: Mod ( safety, mod_kind) => {
1202
+ try_visit ! ( visitor. visit_safety( safety) ) ;
1203
+ match mod_kind {
1204
+ ModKind :: Loaded ( items, _inline, _inner_span) => {
1205
+ walk_list ! ( visitor, visit_item, items) ;
1206
+ }
1207
+ ModKind :: Unloaded => { }
1189
1208
}
1190
- ModKind :: Unloaded => { }
1191
- } ,
1192
- ItemKind :: ForeignMod ( ForeignMod { safety : _ , abi : _ , items } ) => {
1209
+ }
1210
+ ItemKind :: ForeignMod ( ForeignMod { safety , abi : _ , items } ) => {
1211
+ try_visit ! ( visitor . visit_safety ( safety ) ) ;
1193
1212
walk_list ! ( visitor, visit_foreign_item, items) ;
1194
1213
}
1195
1214
ItemKind :: GlobalAsm ( asm) => try_visit ! ( visitor. visit_inline_asm( asm) ) ,
@@ -1210,14 +1229,15 @@ pub mod visit {
1210
1229
}
1211
1230
ItemKind :: Impl ( box Impl {
1212
1231
defaultness : _,
1213
- safety : _ ,
1232
+ safety,
1214
1233
generics,
1215
1234
constness : _,
1216
1235
polarity : _,
1217
1236
of_trait,
1218
1237
self_ty,
1219
1238
items,
1220
1239
} ) => {
1240
+ try_visit ! ( visitor. visit_safety( safety) ) ;
1221
1241
try_visit ! ( visitor. visit_generics( generics) ) ;
1222
1242
visit_opt ! ( visitor, visit_trait_ref, of_trait) ;
1223
1243
try_visit ! ( visitor. visit_ty( self_ty) ) ;
@@ -1228,7 +1248,8 @@ pub mod visit {
1228
1248
try_visit ! ( visitor. visit_generics( generics) ) ;
1229
1249
try_visit ! ( visitor. visit_variant_data( struct_definition) ) ;
1230
1250
}
1231
- ItemKind :: Trait ( box Trait { safety : _, is_auto : _, generics, bounds, items } ) => {
1251
+ ItemKind :: Trait ( box Trait { safety, is_auto : _, generics, bounds, items } ) => {
1252
+ try_visit ! ( visitor. visit_safety( safety) ) ;
1232
1253
try_visit ! ( visitor. visit_generics( generics) ) ;
1233
1254
walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: SuperTraits ) ;
1234
1255
walk_list ! ( visitor, visit_assoc_item, items, AssocCtxt :: Trait ) ;
@@ -1290,8 +1311,9 @@ pub mod visit {
1290
1311
walk_list ! ( visitor, visit_ty, tuple_element_types) ;
1291
1312
}
1292
1313
TyKind :: BareFn ( function_declaration) => {
1293
- let BareFnTy { safety : _ , ext : _, generic_params, decl, decl_span : _ } =
1314
+ let BareFnTy { safety, ext : _, generic_params, decl, decl_span : _ } =
1294
1315
& * * function_declaration;
1316
+ try_visit ! ( visitor. visit_safety( safety) ) ;
1295
1317
walk_list ! ( visitor, visit_generic_param, generic_params) ;
1296
1318
try_visit ! ( visitor. visit_fn_decl( decl) ) ;
1297
1319
}
@@ -1836,7 +1858,7 @@ pub mod mut_visit {
1836
1858
}
1837
1859
TyKind :: BareFn ( bft) => {
1838
1860
let BareFnTy { safety, ext : _, generic_params, decl, decl_span } = bft. deref_mut ( ) ;
1839
- visit_safety ( vis , safety) ;
1861
+ vis . visit_safety ( safety) ;
1840
1862
generic_params. flat_map_in_place ( |param| vis. flat_map_generic_param ( param) ) ;
1841
1863
vis. visit_fn_decl ( decl) ;
1842
1864
vis. visit_span ( decl_span) ;
@@ -1871,7 +1893,7 @@ pub mod mut_visit {
1871
1893
1872
1894
fn walk_foreign_mod < T : MutVisitor > ( vis : & mut T , foreign_mod : & mut ForeignMod ) {
1873
1895
let ForeignMod { safety, abi : _, items } = foreign_mod;
1874
- visit_safety ( vis , safety) ;
1896
+ vis . visit_safety ( safety) ;
1875
1897
items. flat_map_in_place ( |item| vis. flat_map_foreign_item ( item) ) ;
1876
1898
}
1877
1899
@@ -2091,15 +2113,6 @@ pub mod mut_visit {
2091
2113
}
2092
2114
}
2093
2115
2094
- // No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
2095
- fn visit_safety < T : MutVisitor > ( vis : & mut T , safety : & mut Safety ) {
2096
- match safety {
2097
- Safety :: Unsafe ( span) => vis. visit_span ( span) ,
2098
- Safety :: Safe ( span) => vis. visit_span ( span) ,
2099
- Safety :: Default => { }
2100
- }
2101
- }
2102
-
2103
2116
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
2104
2117
fn visit_polarity < T : MutVisitor > ( vis : & mut T , polarity : & mut ImplPolarity ) {
2105
2118
match polarity {
@@ -2206,7 +2219,7 @@ pub mod mut_visit {
2206
2219
vis. visit_fn ( FnKind :: Fn ( sig, generics, body) , span, id) ;
2207
2220
}
2208
2221
ItemKind :: Mod ( safety, mod_kind) => {
2209
- visit_safety ( vis , safety) ;
2222
+ vis . visit_safety ( safety) ;
2210
2223
match mod_kind {
2211
2224
ModKind :: Loaded (
2212
2225
items,
@@ -2255,7 +2268,7 @@ pub mod mut_visit {
2255
2268
items,
2256
2269
} ) => {
2257
2270
visit_defaultness ( vis, defaultness) ;
2258
- visit_safety ( vis , safety) ;
2271
+ vis . visit_safety ( safety) ;
2259
2272
vis. visit_generics ( generics) ;
2260
2273
visit_constness ( vis, constness) ;
2261
2274
visit_polarity ( vis, polarity) ;
@@ -2264,7 +2277,7 @@ pub mod mut_visit {
2264
2277
items. flat_map_in_place ( |item| vis. flat_map_assoc_item ( item, AssocCtxt :: Impl ) ) ;
2265
2278
}
2266
2279
ItemKind :: Trait ( box Trait { safety, is_auto : _, generics, bounds, items } ) => {
2267
- visit_safety ( vis , safety) ;
2280
+ vis . visit_safety ( safety) ;
2268
2281
vis. visit_generics ( generics) ;
2269
2282
visit_bounds ( vis, bounds, BoundKind :: Bound ) ;
2270
2283
items. flat_map_in_place ( |item| vis. flat_map_assoc_item ( item, AssocCtxt :: Trait ) ) ;
@@ -2392,7 +2405,7 @@ pub mod mut_visit {
2392
2405
let FnHeader { safety, coroutine_kind, constness, ext : _ } = header;
2393
2406
visit_constness ( vis, constness) ;
2394
2407
coroutine_kind. as_mut ( ) . map ( |coroutine_kind| vis. visit_coroutine_kind ( coroutine_kind) ) ;
2395
- visit_safety ( vis , safety) ;
2408
+ vis . visit_safety ( safety) ;
2396
2409
}
2397
2410
2398
2411
/// Mutates one item, returning the item again.
0 commit comments