@@ -171,6 +171,17 @@ impl<'a, 'gcx> CheckTypeWellFormed<'a, 'gcx> {
171171 . check_associated_item ( trait_item. id , trait_item. span , method_sig) ;
172172 }
173173
174+ pub fn check_impl_item ( & mut self , def_id : DefId ) {
175+ let node_id = self . tcx . hir . as_local_node_id ( def_id) . unwrap ( ) ;
176+ let impl_item = self . tcx . hir . expect_impl_item ( node_id) ;
177+
178+ let method_sig = match impl_item. node {
179+ hir:: ImplItemKind :: Method ( ref sig, _) => Some ( sig) ,
180+ _ => None
181+ } ;
182+ self . check_associated_item ( impl_item. id , impl_item. span , method_sig) ;
183+ }
184+
174185 fn check_associated_item ( & mut self ,
175186 item_id : ast:: NodeId ,
176187 span : Span ,
@@ -694,12 +705,8 @@ impl<'a, 'tcx, 'v> Visitor<'v> for CheckTypeWellFormedVisitor<'a, 'tcx> {
694705
695706 fn visit_impl_item ( & mut self , impl_item : & ' v hir:: ImplItem ) {
696707 debug ! ( "visit_impl_item: {:?}" , impl_item) ;
697- let method_sig = match impl_item. node {
698- hir:: ImplItemKind :: Method ( ref sig, _) => Some ( sig) ,
699- _ => None
700- } ;
701- CheckTypeWellFormed :: new ( self . tcx )
702- . check_associated_item ( impl_item. id , impl_item. span , method_sig) ;
708+ let def_id = self . tcx . hir . local_def_id ( impl_item. id ) ;
709+ ty:: maps:: queries:: check_impl_item_well_formed:: ensure ( self . tcx , def_id) ;
703710 intravisit:: walk_impl_item ( self , impl_item)
704711 }
705712}
0 commit comments