@@ -238,6 +238,10 @@ pub trait MutVisitor: Sized {
238
238
walk_ident ( self , i) ;
239
239
}
240
240
241
+ fn visit_modifiers ( & mut self , m : & mut TraitBoundModifiers ) {
242
+ walk_modifiers ( self , m) ;
243
+ }
244
+
241
245
fn visit_path ( & mut self , p : & mut Path ) {
242
246
walk_path ( self , p) ;
243
247
}
@@ -1156,12 +1160,29 @@ fn walk_trait_ref<T: MutVisitor>(vis: &mut T, TraitRef { path, ref_id }: &mut Tr
1156
1160
}
1157
1161
1158
1162
fn walk_poly_trait_ref < T : MutVisitor > ( vis : & mut T , p : & mut PolyTraitRef ) {
1159
- let PolyTraitRef { bound_generic_params, modifiers : _, trait_ref, span } = p;
1163
+ let PolyTraitRef { bound_generic_params, modifiers, trait_ref, span } = p;
1164
+ vis. visit_modifiers ( modifiers) ;
1160
1165
bound_generic_params. flat_map_in_place ( |param| vis. flat_map_generic_param ( param) ) ;
1161
1166
vis. visit_trait_ref ( trait_ref) ;
1162
1167
vis. visit_span ( span) ;
1163
1168
}
1164
1169
1170
+ fn walk_modifiers < V : MutVisitor > ( vis : & mut V , m : & mut TraitBoundModifiers ) {
1171
+ let TraitBoundModifiers { constness, asyncness, polarity } = m;
1172
+ match constness {
1173
+ BoundConstness :: Never => { }
1174
+ BoundConstness :: Always ( span) | BoundConstness :: Maybe ( span) => vis. visit_span ( span) ,
1175
+ }
1176
+ match asyncness {
1177
+ BoundAsyncness :: Normal => { }
1178
+ BoundAsyncness :: Async ( span) => vis. visit_span ( span) ,
1179
+ }
1180
+ match polarity {
1181
+ BoundPolarity :: Positive => { }
1182
+ BoundPolarity :: Negative ( span) | BoundPolarity :: Maybe ( span) => vis. visit_span ( span) ,
1183
+ }
1184
+ }
1185
+
1165
1186
pub fn walk_field_def < T : MutVisitor > ( visitor : & mut T , fd : & mut FieldDef ) {
1166
1187
let FieldDef { span, ident, vis, id, ty, attrs, is_placeholder : _, safety, default } = fd;
1167
1188
visitor. visit_id ( id) ;
0 commit comments