@@ -946,33 +946,30 @@ pub fn walk_fn<'v, V: Visitor<'v>>(
946946}
947947
948948pub 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 {
953956 TraitItemKind :: Const ( ref ty, default) => {
954- visitor. visit_id ( trait_item . hir_id ( ) ) ;
957+ visitor. visit_id ( hir_id) ;
955958 visitor. visit_ty ( ty) ;
956959 walk_list ! ( visitor, visit_nested_body, default ) ;
957960 }
958961 TraitItemKind :: Fn ( ref sig, TraitFn :: Required ( param_names) ) => {
959- visitor. visit_id ( trait_item . hir_id ( ) ) ;
962+ visitor. visit_id ( hir_id) ;
960963 visitor. visit_fn_decl ( & sig. decl ) ;
961964 for & param_name in param_names {
962965 visitor. visit_ident ( param_name) ;
963966 }
964967 }
965968 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) ;
973970 }
974971 TraitItemKind :: Type ( bounds, ref default) => {
975- visitor. visit_id ( trait_item . hir_id ( ) ) ;
972+ visitor. visit_id ( hir_id) ;
976973 walk_list ! ( visitor, visit_param_bound, bounds) ;
977974 walk_list ! ( visitor, visit_ty, default ) ;
978975 }
0 commit comments