@@ -20,12 +20,12 @@ import std::ebml::serializer;
20
20
import middle:: resolve;
21
21
import syntax:: ast;
22
22
import driver:: session:: session;
23
- import middle:: astencode;
24
23
25
24
export encode_parms;
26
25
export encode_metadata;
27
26
export encoded_ty;
28
27
export reachable;
28
+ export encode_inlined_item;
29
29
30
30
// used by astencode:
31
31
export def_to_str;
@@ -35,6 +35,11 @@ export encode_def_id;
35
35
36
36
type abbrev_map = map:: hashmap < ty:: t , tyencode:: ty_abbrev > ;
37
37
38
+ type encode_inlined_item = fn @( ecx : @encode_ctxt ,
39
+ ebml_w : ebml:: writer ,
40
+ path : ast_map:: path ,
41
+ ii : ast:: inlined_item ) ;
42
+
38
43
type encode_parms = {
39
44
tcx : ty:: ctxt ,
40
45
reachable : hashmap < ast:: node_id , ( ) > ,
@@ -43,10 +48,11 @@ type encode_parms = {
43
48
discrim_symbols : hashmap < ast:: node_id , str > ,
44
49
link_meta : back:: link:: link_meta ,
45
50
cstore : cstore:: cstore ,
46
- maps : maps
51
+ maps : maps ,
52
+ encode_inlined_item : encode_inlined_item
47
53
} ;
48
54
49
- type encode_ctxt = {
55
+ enum encode_ctxt = {
50
56
tcx: ty:: ctxt,
51
57
reachable: hashmap<ast:: node_id, ( ) >,
52
58
exp_map: resolve:: exp_map,
@@ -55,6 +61,7 @@ type encode_ctxt = {
55
61
link_meta: back:: link:: link_meta,
56
62
cstore: cstore:: cstore,
57
63
maps: maps,
64
+ encode_inlined_item: encode_inlined_item,
58
65
type_abbrevs: abbrev_map
59
66
} ;
60
67
@@ -491,7 +498,7 @@ fn encode_info_for_fn(ecx: @encode_ctxt, ebml_w: ebml::writer,
491
498
encode_path( ebml_w, path, ast_map:: path_name( ident) ) ;
492
499
alt item {
493
500
some( it) {
494
- astencode :: encode_inlined_item( ecx, ebml_w, path, it) ;
501
+ ecx . encode_inlined_item( ecx, ebml_w, path, it) ;
495
502
}
496
503
none {
497
504
encode_symbol( ecx, ebml_w, id) ;
@@ -513,7 +520,7 @@ fn encode_info_for_method(ecx: @encode_ctxt, ebml_w: ebml::writer,
513
520
encode_name( ebml_w, m. ident) ;
514
521
encode_path( ebml_w, impl_path, ast_map:: path_name( m. ident) ) ;
515
522
if all_tps. len( ) > 0 u || should_inline {
516
- astencode : : encode_inlined_item(
523
+ ecx . encode_inlined_item(
517
524
ecx, ebml_w, impl_path,
518
525
ii_method( local_def( parent_id) , m) ) ;
519
526
} else {
@@ -574,7 +581,7 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item,
574
581
encode_type( ecx, ebml_w, node_id_to_type( tcx, item. id) ) ;
575
582
encode_path( ebml_w, path, ast_map:: path_name( item. ident) ) ;
576
583
if tps. len( ) > 0 u || should_inline( item. attrs) {
577
- astencode :: encode_inlined_item( ecx, ebml_w, path, ii_item( item) ) ;
584
+ ecx . encode_inlined_item( ecx, ebml_w, path, ii_item( item) ) ;
578
585
} else {
579
586
encode_symbol( ecx, ebml_w, item. id) ;
580
587
}
@@ -616,7 +623,7 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item,
616
623
for variants. each { |v|
617
624
encode_variant_id( ebml_w, local_def( v. node. id) ) ;
618
625
}
619
- astencode :: encode_inlined_item( ecx, ebml_w, path, ii_item( item) ) ;
626
+ ecx . encode_inlined_item( ecx, ebml_w, path, ii_item( item) ) ;
620
627
encode_path( ebml_w, path, ast_map:: path_name( item. ident) ) ;
621
628
encode_region_param( ebml_w, rp) ;
622
629
}
@@ -692,7 +699,7 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item,
692
699
encode_type_param_bounds( ebml_w, ecx, tps) ;
693
700
encode_type( ecx, ebml_w, ty:: ty_fn_ret( fn_ty) ) ;
694
701
encode_name( ebml_w, item. ident) ;
695
- astencode :: encode_inlined_item( ecx, ebml_w, path, ii_item( item) ) ;
702
+ ecx . encode_inlined_item( ecx, ebml_w, path, ii_item( item) ) ;
696
703
if ( tps. len( ) == 0 u) {
697
704
encode_symbol( ecx, ebml_w, item. id) ;
698
705
}
@@ -777,8 +784,8 @@ fn encode_info_for_native_item(ecx: @encode_ctxt, ebml_w: ebml::writer,
777
784
encode_type_param_bounds( ebml_w, ecx, tps) ;
778
785
encode_type( ecx, ebml_w, node_id_to_type( ecx. tcx, nitem. id) ) ;
779
786
if abi == native_abi_rust_intrinsic {
780
- astencode :: encode_inlined_item( ecx, ebml_w, path,
781
- ii_native( nitem) ) ;
787
+ ecx . encode_inlined_item( ecx, ebml_w, path,
788
+ ii_native( nitem) ) ;
782
789
} else {
783
790
encode_symbol( ecx, ebml_w, nitem. id) ;
784
791
}
@@ -1045,7 +1052,7 @@ fn encode_hash(ebml_w: ebml::writer, hash: str) {
1045
1052
}
1046
1053
1047
1054
fn encode_metadata( parms: encode_parms, crate : @crate ) -> [ u8 ] {
1048
- let ecx: @encode_ctxt = @{
1055
+ let ecx: @encode_ctxt = @encode_ctxt ( {
1049
1056
tcx: parms. tcx,
1050
1057
reachable: parms. reachable,
1051
1058
exp_map: parms. exp_map,
@@ -1054,8 +1061,9 @@ fn encode_metadata(parms: encode_parms, crate: @crate) -> [u8] {
1054
1061
link_meta: parms. link_meta,
1055
1062
cstore: parms. cstore,
1056
1063
maps: parms. maps,
1064
+ encode_inlined_item: parms. encode_inlined_item,
1057
1065
type_abbrevs: ty:: new_ty_hash( )
1058
- } ;
1066
+ } ) ;
1059
1067
1060
1068
let buf = io:: mem_buffer( ) ;
1061
1069
let buf_w = io:: mem_buffer_writer( buf) ;
0 commit comments