@@ -22,6 +22,7 @@ use rustc_hir::def_id::DefId;
2222use rustc_hir:: hir_id:: HirId ;
2323use rustc_hir:: lang_items:: LangItem ;
2424use rustc_infer:: infer:: TyCtxtInferExt ;
25+ use rustc_metadata:: creader:: CStore ;
2526use rustc_middle:: {
2627 metadata:: ModChild ,
2728 ty:: {
@@ -1149,51 +1150,50 @@ fn diff_trait_impls<'tcx>(
11491150 let structural_peq_def_id = tcx. require_lang_item ( LangItem :: StructuralPeq , None ) ;
11501151 let structural_trait_def_ids = [ structural_peq_def_id, structural_teq_def_id] ;
11511152
1152- for ( old_impl_def_id , _ ) in tcx
1153- . all_trait_implementations ( id_mapping . get_old_crate ( ) )
1154- . iter ( )
1153+ let cstore = CStore :: from_tcx ( tcx) ;
1154+ for ( old_impl_def_id , _ ) in
1155+ cstore . trait_impls_in_crate_untracked ( id_mapping . get_old_crate ( ) )
11551156 {
1156- let old_trait_def_id = tcx. impl_trait_ref ( * old_impl_def_id) . unwrap ( ) . def_id ;
1157+ let old_trait_def_id = tcx. impl_trait_ref ( old_impl_def_id) . unwrap ( ) . def_id ;
11571158
11581159 if structural_trait_def_ids. contains ( & old_trait_def_id) {
11591160 continue ;
11601161 }
11611162
1162- if !to_new. can_translate ( old_trait_def_id) || !is_impl_trait_public ( tcx, * old_impl_def_id) {
1163+ if !to_new. can_translate ( old_trait_def_id) || !is_impl_trait_public ( tcx, old_impl_def_id) {
11631164 continue ;
11641165 }
11651166
1166- if !match_trait_impl ( tcx, & to_new, * old_impl_def_id) {
1167+ if !match_trait_impl ( tcx, & to_new, old_impl_def_id) {
11671168 changes. new_change_impl (
1168- * old_impl_def_id,
1169- tcx. def_path_str ( * old_impl_def_id) ,
1170- tcx. def_span ( * old_impl_def_id) ,
1169+ old_impl_def_id,
1170+ tcx. def_path_str ( old_impl_def_id) ,
1171+ tcx. def_span ( old_impl_def_id) ,
11711172 ) ;
1172- changes. add_change ( ChangeType :: TraitImplTightened , * old_impl_def_id, None ) ;
1173+ changes. add_change ( ChangeType :: TraitImplTightened , old_impl_def_id, None ) ;
11731174 }
11741175 }
11751176
1176- for ( new_impl_def_id, _) in tcx
1177- . all_trait_implementations ( id_mapping. get_new_crate ( ) )
1178- . iter ( )
1177+ for ( new_impl_def_id, _) in
1178+ cstore. trait_impls_in_crate_untracked ( id_mapping. get_new_crate ( ) )
11791179 {
1180- let new_trait_def_id = tcx. impl_trait_ref ( * new_impl_def_id) . unwrap ( ) . def_id ;
1180+ let new_trait_def_id = tcx. impl_trait_ref ( new_impl_def_id) . unwrap ( ) . def_id ;
11811181
11821182 if structural_trait_def_ids. contains ( & new_trait_def_id) {
11831183 continue ;
11841184 }
11851185
1186- if !to_old. can_translate ( new_trait_def_id) || !is_impl_trait_public ( tcx, * new_impl_def_id) {
1186+ if !to_old. can_translate ( new_trait_def_id) || !is_impl_trait_public ( tcx, new_impl_def_id) {
11871187 continue ;
11881188 }
11891189
1190- if !match_trait_impl ( tcx, & to_old, * new_impl_def_id) {
1190+ if !match_trait_impl ( tcx, & to_old, new_impl_def_id) {
11911191 changes. new_change_impl (
1192- * new_impl_def_id,
1193- tcx. def_path_str ( * new_impl_def_id) ,
1194- tcx. def_span ( * new_impl_def_id) ,
1192+ new_impl_def_id,
1193+ tcx. def_path_str ( new_impl_def_id) ,
1194+ tcx. def_span ( new_impl_def_id) ,
11951195 ) ;
1196- changes. add_change ( ChangeType :: TraitImplLoosened , * new_impl_def_id, None ) ;
1196+ changes. add_change ( ChangeType :: TraitImplLoosened , new_impl_def_id, None ) ;
11971197 }
11981198 }
11991199}
0 commit comments