@@ -151,7 +151,7 @@ impl<'a, 'tcx, 'v> Visitor<'v> for CollectItemTypesVisitor<'a, 'tcx> {
151
151
}
152
152
153
153
fn visit_impl_item ( & mut self , impl_item : & hir:: ImplItem ) {
154
- // handled in `visit_item` above; we may want to break this out later
154
+ convert_impl_item ( self . ccx , impl_item ) ;
155
155
intravisit:: walk_impl_item ( self , impl_item) ;
156
156
}
157
157
}
@@ -792,10 +792,6 @@ fn convert_item(ccx: &CrateCtxt, it: &hir::Item) {
792
792
}
793
793
}
794
794
}
795
-
796
- for & impl_item_id in impl_item_ids {
797
- convert_impl_item ( ccx, impl_item_id) ;
798
- }
799
795
} ,
800
796
hir:: ItemTrait ( .., ref trait_items) => {
801
797
let trait_def = trait_def_of_item ( ccx, it) ;
@@ -881,10 +877,12 @@ fn convert_item(ccx: &CrateCtxt, it: &hir::Item) {
881
877
}
882
878
}
883
879
884
- fn convert_impl_item ( ccx : & CrateCtxt , impl_item_id : hir:: ImplItemId ) {
880
+ fn convert_impl_item ( ccx : & CrateCtxt , impl_item : & hir:: ImplItem ) {
885
881
let tcx = ccx. tcx ;
886
- let impl_item = tcx. map . impl_item ( impl_item_id) ;
887
- let impl_def_id = tcx. map . get_parent_did ( impl_item_id. id ) ;
882
+
883
+ // we can lookup details about the impl because items are visited
884
+ // before impl-items
885
+ let impl_def_id = tcx. map . get_parent_did ( impl_item. id ) ;
888
886
let impl_predicates = tcx. item_predicates ( impl_def_id) ;
889
887
let impl_trait_ref = tcx. impl_trait_ref ( impl_def_id) ;
890
888
let impl_self_ty = tcx. item_type ( impl_def_id) ;
0 commit comments