@@ -343,6 +343,7 @@ macro_rules! make_ast_visitor {
343
343
make_visit!{ PathSegment ; visit_path_segment, walk_path_segment}
344
344
make_visit!{ PolyTraitRef ; visit_poly_trait_ref, walk_poly_trait_ref}
345
345
make_visit!{ PreciseCapturingArg ; visit_precise_capturing_arg, walk_precise_capturing_arg}
346
+ make_visit!{ Safety ; visit_safety, walk_safety}
346
347
make_visit!{ TraitRef ; visit_trait_ref, walk_trait_ref}
347
348
make_visit!{ UseTree , id: NodeId , _ nested: bool ; visit_use_tree, walk_use_tree}
348
349
make_visit!{ Variant ; visit_variant, walk_variant}
@@ -851,6 +852,20 @@ macro_rules! make_ast_visitor {
851
852
return_result!( V )
852
853
}
853
854
855
+ pub fn walk_safety<$( $lt, ) ? V : $trait$( <$lt>) ?>(
856
+ vis: & mut V ,
857
+ safety: ref_t!( Safety )
858
+ ) -> result!( V ) {
859
+ match safety {
860
+ Safety :: Unsafe ( span)
861
+ | Safety :: Safe ( span) => {
862
+ try_v!( visit_span!( vis, span) )
863
+ }
864
+ Safety :: Default => { }
865
+ }
866
+ return_result!( V )
867
+ }
868
+
854
869
pub fn walk_trait_ref<$( $lt, ) ? V : $trait$( <$lt>) ?>(
855
870
vis: & mut V ,
856
871
trait_ref: ref_t!( TraitRef )
@@ -1177,13 +1192,17 @@ pub mod visit {
1177
1192
let kind = FnKind :: Fn ( FnCtxt :: Free , ident, sig, vis, generics, body. as_deref ( ) ) ;
1178
1193
try_visit ! ( visitor. visit_fn( kind, * span, * id) ) ;
1179
1194
}
1180
- ItemKind :: Mod ( _unsafety, mod_kind) => match mod_kind {
1181
- ModKind :: Loaded ( items, _inline, _inner_span) => {
1182
- walk_list ! ( visitor, visit_item, items) ;
1195
+ ItemKind :: Mod ( safety, mod_kind) => {
1196
+ try_visit ! ( visitor. visit_safety( safety) ) ;
1197
+ match mod_kind {
1198
+ ModKind :: Loaded ( items, _inline, _inner_span) => {
1199
+ walk_list ! ( visitor, visit_item, items) ;
1200
+ }
1201
+ ModKind :: Unloaded => { }
1183
1202
}
1184
- ModKind :: Unloaded => { }
1185
- } ,
1186
- ItemKind :: ForeignMod ( ForeignMod { safety : _ , abi : _ , items } ) => {
1203
+ }
1204
+ ItemKind :: ForeignMod ( ForeignMod { safety , abi : _ , items } ) => {
1205
+ try_visit ! ( visitor . visit_safety ( safety ) ) ;
1187
1206
walk_list ! ( visitor, visit_foreign_item, items) ;
1188
1207
}
1189
1208
ItemKind :: GlobalAsm ( asm) => try_visit ! ( visitor. visit_inline_asm( asm) ) ,
@@ -1204,14 +1223,15 @@ pub mod visit {
1204
1223
}
1205
1224
ItemKind :: Impl ( box Impl {
1206
1225
defaultness : _,
1207
- safety : _ ,
1226
+ safety,
1208
1227
generics,
1209
1228
constness : _,
1210
1229
polarity : _,
1211
1230
of_trait,
1212
1231
self_ty,
1213
1232
items,
1214
1233
} ) => {
1234
+ try_visit ! ( visitor. visit_safety( safety) ) ;
1215
1235
try_visit ! ( visitor. visit_generics( generics) ) ;
1216
1236
visit_opt ! ( visitor, visit_trait_ref, of_trait) ;
1217
1237
try_visit ! ( visitor. visit_ty( self_ty) ) ;
@@ -1222,7 +1242,8 @@ pub mod visit {
1222
1242
try_visit ! ( visitor. visit_generics( generics) ) ;
1223
1243
try_visit ! ( visitor. visit_variant_data( struct_definition) ) ;
1224
1244
}
1225
- ItemKind :: Trait ( box Trait { safety : _, is_auto : _, generics, bounds, items } ) => {
1245
+ ItemKind :: Trait ( box Trait { safety, is_auto : _, generics, bounds, items } ) => {
1246
+ try_visit ! ( visitor. visit_safety( safety) ) ;
1226
1247
try_visit ! ( visitor. visit_generics( generics) ) ;
1227
1248
walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: SuperTraits ) ;
1228
1249
walk_list ! ( visitor, visit_assoc_item, items, AssocCtxt :: Trait ) ;
@@ -1284,8 +1305,9 @@ pub mod visit {
1284
1305
walk_list ! ( visitor, visit_ty, tuple_element_types) ;
1285
1306
}
1286
1307
TyKind :: BareFn ( function_declaration) => {
1287
- let BareFnTy { safety : _ , ext : _, generic_params, decl, decl_span : _ } =
1308
+ let BareFnTy { safety, ext : _, generic_params, decl, decl_span : _ } =
1288
1309
& * * function_declaration;
1310
+ try_visit ! ( visitor. visit_safety( safety) ) ;
1289
1311
walk_list ! ( visitor, visit_generic_param, generic_params) ;
1290
1312
try_visit ! ( visitor. visit_fn_decl( decl) ) ;
1291
1313
}
@@ -1830,7 +1852,7 @@ pub mod mut_visit {
1830
1852
}
1831
1853
TyKind :: BareFn ( bft) => {
1832
1854
let BareFnTy { safety, ext : _, generic_params, decl, decl_span } = bft. deref_mut ( ) ;
1833
- visit_safety ( vis , safety) ;
1855
+ vis . visit_safety ( safety) ;
1834
1856
generic_params. flat_map_in_place ( |param| vis. flat_map_generic_param ( param) ) ;
1835
1857
vis. visit_fn_decl ( decl) ;
1836
1858
vis. visit_span ( decl_span) ;
@@ -1865,7 +1887,7 @@ pub mod mut_visit {
1865
1887
1866
1888
fn walk_foreign_mod < T : MutVisitor > ( vis : & mut T , foreign_mod : & mut ForeignMod ) {
1867
1889
let ForeignMod { safety, abi : _, items } = foreign_mod;
1868
- visit_safety ( vis , safety) ;
1890
+ vis . visit_safety ( safety) ;
1869
1891
items. flat_map_in_place ( |item| vis. flat_map_foreign_item ( item) ) ;
1870
1892
}
1871
1893
@@ -2085,15 +2107,6 @@ pub mod mut_visit {
2085
2107
}
2086
2108
}
2087
2109
2088
- // No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
2089
- fn visit_safety < T : MutVisitor > ( vis : & mut T , safety : & mut Safety ) {
2090
- match safety {
2091
- Safety :: Unsafe ( span) => vis. visit_span ( span) ,
2092
- Safety :: Safe ( span) => vis. visit_span ( span) ,
2093
- Safety :: Default => { }
2094
- }
2095
- }
2096
-
2097
2110
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
2098
2111
fn visit_polarity < T : MutVisitor > ( vis : & mut T , polarity : & mut ImplPolarity ) {
2099
2112
match polarity {
@@ -2200,7 +2213,7 @@ pub mod mut_visit {
2200
2213
vis. visit_fn ( FnKind :: Fn ( sig, generics, body) , span, id) ;
2201
2214
}
2202
2215
ItemKind :: Mod ( safety, mod_kind) => {
2203
- visit_safety ( vis , safety) ;
2216
+ vis . visit_safety ( safety) ;
2204
2217
match mod_kind {
2205
2218
ModKind :: Loaded (
2206
2219
items,
@@ -2249,7 +2262,7 @@ pub mod mut_visit {
2249
2262
items,
2250
2263
} ) => {
2251
2264
visit_defaultness ( vis, defaultness) ;
2252
- visit_safety ( vis , safety) ;
2265
+ vis . visit_safety ( safety) ;
2253
2266
vis. visit_generics ( generics) ;
2254
2267
visit_constness ( vis, constness) ;
2255
2268
visit_polarity ( vis, polarity) ;
@@ -2258,7 +2271,7 @@ pub mod mut_visit {
2258
2271
items. flat_map_in_place ( |item| vis. flat_map_assoc_item ( item, AssocCtxt :: Impl ) ) ;
2259
2272
}
2260
2273
ItemKind :: Trait ( box Trait { safety, is_auto : _, generics, bounds, items } ) => {
2261
- visit_safety ( vis , safety) ;
2274
+ vis . visit_safety ( safety) ;
2262
2275
vis. visit_generics ( generics) ;
2263
2276
visit_bounds ( vis, bounds, BoundKind :: Bound ) ;
2264
2277
items. flat_map_in_place ( |item| vis. flat_map_assoc_item ( item, AssocCtxt :: Trait ) ) ;
@@ -2386,7 +2399,7 @@ pub mod mut_visit {
2386
2399
let FnHeader { safety, coroutine_kind, constness, ext : _ } = header;
2387
2400
visit_constness ( vis, constness) ;
2388
2401
coroutine_kind. as_mut ( ) . map ( |coroutine_kind| vis. visit_coroutine_kind ( coroutine_kind) ) ;
2389
- visit_safety ( vis , safety) ;
2402
+ vis . visit_safety ( safety) ;
2390
2403
}
2391
2404
2392
2405
/// Mutates one item, returning the item again.
0 commit comments