@@ -103,7 +103,7 @@ struct entry<T> {
103103
104104fn encode_trait_ref < ' a , ' tcx > ( rbml_w : & mut Encoder ,
105105 ecx : & EncodeContext < ' a , ' tcx > ,
106- trait_ref : & ty:: TraitRef < ' tcx > ,
106+ trait_ref : ty:: TraitRef < ' tcx > ,
107107 tag : usize ) {
108108 let ty_str_ctxt = & tyencode:: ctxt {
109109 diag : ecx. diag ,
@@ -191,7 +191,7 @@ pub fn write_trait_ref<'a, 'tcx>(ecx: &EncodeContext<'a, 'tcx>,
191191 tcx : ecx. tcx ,
192192 abbrevs : & ecx. type_abbrevs
193193 } ;
194- tyencode:: enc_trait_ref ( rbml_w, ty_str_ctxt, trait_ref) ;
194+ tyencode:: enc_trait_ref ( rbml_w, ty_str_ctxt, * trait_ref) ;
195195}
196196
197197pub fn write_region ( ecx : & EncodeContext ,
@@ -974,16 +974,14 @@ fn encode_inherent_implementations(ecx: &EncodeContext,
974974fn encode_extension_implementations ( ecx : & EncodeContext ,
975975 rbml_w : & mut Encoder ,
976976 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+ } ) ;
987985}
988986
989987fn encode_stability ( rbml_w : & mut Encoder , stab_opt : Option < attr:: Stability > ) {
@@ -1201,7 +1199,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
12011199 encode_unsafety ( rbml_w, unsafety) ;
12021200
12031201 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) ;
12051203 rbml_w. end_tag ( ) ;
12061204 }
12071205 ast:: ItemImpl ( unsafety, polarity, _, ref opt_trait, ref ty, ref ast_items) => {
@@ -1246,7 +1244,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
12461244 }
12471245 if opt_trait. is_some ( ) {
12481246 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) ;
12501248 }
12511249 encode_path ( rbml_w, path. clone ( ) ) ;
12521250 encode_stability ( rbml_w, stab) ;
@@ -1314,7 +1312,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
13141312 tag_item_generics) ;
13151313 encode_predicates ( rbml_w, ecx, & ty:: lookup_super_predicates ( tcx, def_id) ,
13161314 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) ;
13181316 encode_name ( rbml_w, item. ident . name ) ;
13191317 encode_attributes ( rbml_w, & item. attrs ) ;
13201318 encode_visibility ( rbml_w, vis) ;
0 commit comments