@@ -946,33 +946,30 @@ pub fn walk_fn<'v, V: Visitor<'v>>(
946
946
}
947
947
948
948
pub fn walk_trait_item < ' v , V : Visitor < ' v > > ( visitor : & mut V , trait_item : & ' v TraitItem < ' v > ) {
949
- visitor. visit_ident ( trait_item. ident ) ;
950
- visitor. visit_generics ( & trait_item. generics ) ;
951
- visitor. visit_defaultness ( & trait_item. defaultness ) ;
952
- match trait_item. kind {
949
+ // N.B., deliberately force a compilation error if/when new fields are added.
950
+ let TraitItem { ident, generics, ref defaultness, ref kind, span, def_id : _ } = * trait_item;
951
+ let hir_id = trait_item. hir_id ( ) ;
952
+ visitor. visit_ident ( ident) ;
953
+ visitor. visit_generics ( & generics) ;
954
+ visitor. visit_defaultness ( & defaultness) ;
955
+ match * kind {
953
956
TraitItemKind :: Const ( ref ty, default) => {
954
- visitor. visit_id ( trait_item . hir_id ( ) ) ;
957
+ visitor. visit_id ( hir_id) ;
955
958
visitor. visit_ty ( ty) ;
956
959
walk_list ! ( visitor, visit_nested_body, default ) ;
957
960
}
958
961
TraitItemKind :: Fn ( ref sig, TraitFn :: Required ( param_names) ) => {
959
- visitor. visit_id ( trait_item . hir_id ( ) ) ;
962
+ visitor. visit_id ( hir_id) ;
960
963
visitor. visit_fn_decl ( & sig. decl ) ;
961
964
for & param_name in param_names {
962
965
visitor. visit_ident ( param_name) ;
963
966
}
964
967
}
965
968
TraitItemKind :: Fn ( ref sig, TraitFn :: Provided ( body_id) ) => {
966
- visitor. visit_fn (
967
- FnKind :: Method ( trait_item. ident , sig) ,
968
- & sig. decl ,
969
- body_id,
970
- trait_item. span ,
971
- trait_item. hir_id ( ) ,
972
- ) ;
969
+ visitor. visit_fn ( FnKind :: Method ( ident, sig) , & sig. decl , body_id, span, hir_id) ;
973
970
}
974
971
TraitItemKind :: Type ( bounds, ref default) => {
975
- visitor. visit_id ( trait_item . hir_id ( ) ) ;
972
+ visitor. visit_id ( hir_id) ;
976
973
walk_list ! ( visitor, visit_param_bound, bounds) ;
977
974
walk_list ! ( visitor, visit_ty, default ) ;
978
975
}
0 commit comments