@@ -137,6 +137,7 @@ fn encode_module_item_paths(ebml_w: ebml::writer, module: _mod, path: [str],
137
137
encode_def_id ( ebml_w, local_def ( it. id ) ) ;
138
138
ebml:: end_tag ( ebml_w) ;
139
139
}
140
+ item_impl ( _, _, _) { }
140
141
}
141
142
}
142
143
}
@@ -278,10 +279,20 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item,
278
279
encode_symbol ( ecx, ebml_w, item. id ) ;
279
280
ebml:: end_tag ( ebml_w) ;
280
281
}
281
- item_mod ( _ ) {
282
+ item_mod ( m ) {
282
283
ebml:: start_tag ( ebml_w, tag_items_data_item) ;
283
284
encode_def_id ( ebml_w, local_def ( item. id ) ) ;
284
285
encode_family ( ebml_w, 'm' as u8 ) ;
286
+ for i in m. items {
287
+ alt i. node {
288
+ item_impl ( _, _, _) {
289
+ ebml:: start_tag ( ebml_w, tag_mod_impl) ;
290
+ ebml_w. writer . write ( str:: bytes ( def_to_str ( local_def ( i. id ) ) ) ) ;
291
+ ebml:: end_tag ( ebml_w) ;
292
+ }
293
+ _ { }
294
+ }
295
+ }
285
296
ebml:: end_tag ( ebml_w) ;
286
297
}
287
298
item_native_mod ( _) {
@@ -349,6 +360,31 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item,
349
360
encode_symbol ( ecx, ebml_w, ctor_id) ;
350
361
ebml:: end_tag ( ebml_w) ;
351
362
}
363
+ item_impl ( tps, _, methods) {
364
+ ebml:: start_tag ( ebml_w, tag_items_data_item) ;
365
+ encode_def_id ( ebml_w, local_def ( item. id ) ) ;
366
+ encode_family ( ebml_w, 'I' as u8 ) ;
367
+ encode_type_param_kinds ( ebml_w, tps) ;
368
+ encode_type ( ecx, ebml_w, node_id_to_monotype ( ecx. ccx . tcx , item. id ) ) ;
369
+ for m in methods {
370
+ ebml:: start_tag ( ebml_w, tag_impl_method) ;
371
+ ebml_w. writer . write ( str:: bytes ( def_to_str ( local_def ( m. node . id ) ) ) ) ;
372
+ ebml:: end_tag ( ebml_w) ;
373
+ }
374
+ ebml:: end_tag ( ebml_w) ;
375
+
376
+ for m in methods {
377
+ index += [ { val: m. node . id , pos: ebml_w. writer . tell ( ) } ] ;
378
+ ebml:: start_tag ( ebml_w, tag_items_data_item) ;
379
+ encode_def_id ( ebml_w, local_def ( m. node . id ) ) ;
380
+ encode_family ( ebml_w, 'i' as u8 ) ;
381
+ encode_type_param_kinds ( ebml_w, tps + m. node . tps ) ;
382
+ encode_type ( ecx, ebml_w,
383
+ node_id_to_monotype ( ecx. ccx . tcx , m. node . id ) ) ;
384
+ encode_symbol ( ecx, ebml_w, m. node . id ) ;
385
+ ebml:: end_tag ( ebml_w) ;
386
+ }
387
+ }
352
388
}
353
389
}
354
390
0 commit comments