@@ -103,7 +103,7 @@ struct entry<T> {
103
103
104
104
fn encode_trait_ref < ' a , ' tcx > ( rbml_w : & mut Encoder ,
105
105
ecx : & EncodeContext < ' a , ' tcx > ,
106
- trait_ref : & ty:: TraitRef < ' tcx > ,
106
+ trait_ref : ty:: TraitRef < ' tcx > ,
107
107
tag : usize ) {
108
108
let ty_str_ctxt = & tyencode:: ctxt {
109
109
diag : ecx. diag ,
@@ -191,7 +191,7 @@ pub fn write_trait_ref<'a, 'tcx>(ecx: &EncodeContext<'a, 'tcx>,
191
191
tcx : ecx. tcx ,
192
192
abbrevs : & ecx. type_abbrevs
193
193
} ;
194
- tyencode:: enc_trait_ref ( rbml_w, ty_str_ctxt, trait_ref) ;
194
+ tyencode:: enc_trait_ref ( rbml_w, ty_str_ctxt, * trait_ref) ;
195
195
}
196
196
197
197
pub fn write_region ( ecx : & EncodeContext ,
@@ -974,16 +974,14 @@ fn encode_inherent_implementations(ecx: &EncodeContext,
974
974
fn encode_extension_implementations ( ecx : & EncodeContext ,
975
975
rbml_w : & mut Encoder ,
976
976
trait_def_id : DefId ) {
977
- match ecx. tcx . trait_impls . borrow ( ) . get ( & trait_def_id) {
978
- None => { }
979
- Some ( implementations) => {
980
- for & impl_def_id in & * implementations. borrow ( ) {
981
- rbml_w. start_tag ( tag_items_data_item_extension_impl) ;
982
- encode_def_id ( rbml_w, impl_def_id) ;
983
- rbml_w. end_tag ( ) ;
984
- }
985
- }
986
- }
977
+ assert ! ( ast_util:: is_local( trait_def_id) ) ;
978
+ let def = ty:: lookup_trait_def ( ecx. tcx , trait_def_id) ;
979
+
980
+ def. for_each_impl ( ecx. tcx , |impl_def_id| {
981
+ rbml_w. start_tag ( tag_items_data_item_extension_impl) ;
982
+ encode_def_id ( rbml_w, impl_def_id) ;
983
+ rbml_w. end_tag ( ) ;
984
+ } ) ;
987
985
}
988
986
989
987
fn encode_stability ( rbml_w : & mut Encoder , stab_opt : Option < attr:: Stability > ) {
@@ -1201,7 +1199,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
1201
1199
encode_unsafety ( rbml_w, unsafety) ;
1202
1200
1203
1201
let trait_ref = ty:: impl_id_to_trait_ref ( tcx, item. id ) ;
1204
- encode_trait_ref ( rbml_w, ecx, & * trait_ref, tag_item_trait_ref) ;
1202
+ encode_trait_ref ( rbml_w, ecx, trait_ref, tag_item_trait_ref) ;
1205
1203
rbml_w. end_tag ( ) ;
1206
1204
}
1207
1205
ast:: ItemImpl ( unsafety, polarity, _, ref opt_trait, ref ty, ref ast_items) => {
@@ -1246,7 +1244,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
1246
1244
}
1247
1245
if opt_trait. is_some ( ) {
1248
1246
let trait_ref = ty:: impl_id_to_trait_ref ( tcx, item. id ) ;
1249
- encode_trait_ref ( rbml_w, ecx, & * trait_ref, tag_item_trait_ref) ;
1247
+ encode_trait_ref ( rbml_w, ecx, trait_ref, tag_item_trait_ref) ;
1250
1248
}
1251
1249
encode_path ( rbml_w, path. clone ( ) ) ;
1252
1250
encode_stability ( rbml_w, stab) ;
@@ -1314,7 +1312,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
1314
1312
tag_item_generics) ;
1315
1313
encode_predicates ( rbml_w, ecx, & ty:: lookup_super_predicates ( tcx, def_id) ,
1316
1314
tag_item_super_predicates) ;
1317
- encode_trait_ref ( rbml_w, ecx, & * trait_def. trait_ref , tag_item_trait_ref) ;
1315
+ encode_trait_ref ( rbml_w, ecx, trait_def. trait_ref , tag_item_trait_ref) ;
1318
1316
encode_name ( rbml_w, item. ident . name ) ;
1319
1317
encode_attributes ( rbml_w, & item. attrs ) ;
1320
1318
encode_visibility ( rbml_w, vis) ;
0 commit comments