@@ -171,6 +171,17 @@ impl<'a, 'gcx> CheckTypeWellFormed<'a, 'gcx> {
171
171
. check_associated_item ( trait_item. id , trait_item. span , method_sig) ;
172
172
}
173
173
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
+
174
185
fn check_associated_item ( & mut self ,
175
186
item_id : ast:: NodeId ,
176
187
span : Span ,
@@ -694,12 +705,8 @@ impl<'a, 'tcx, 'v> Visitor<'v> for CheckTypeWellFormedVisitor<'a, 'tcx> {
694
705
695
706
fn visit_impl_item ( & mut self , impl_item : & ' v hir:: ImplItem ) {
696
707
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) ;
703
710
intravisit:: walk_impl_item ( self , impl_item)
704
711
}
705
712
}
0 commit comments