@@ -20,6 +20,7 @@ import std::ebml::serializer;
20
20
21
21
export encode_metadata;
22
22
export encoded_ty;
23
+ export reachable;
23
24
24
25
// used by astencode:
25
26
export def_to_str;
@@ -32,6 +33,10 @@ type abbrev_map = map::hashmap<ty::t, tyencode::ty_abbrev>;
32
33
type encode_ctxt = { ccx : @crate_ctxt ,
33
34
type_abbrevs : abbrev_map } ;
34
35
36
+ fn reachable ( ecx : @encode_ctxt , id : node_id ) -> bool {
37
+ ecx. ccx . reachable . contains_key ( id)
38
+ }
39
+
35
40
// Path table encoding
36
41
fn encode_name ( ebml_w : ebml:: writer , name : str ) {
37
42
ebml_w. wr_tagged_str ( tag_paths_data_name, name) ;
@@ -110,7 +115,7 @@ fn encode_module_item_paths(ebml_w: ebml::writer, ecx: @encode_ctxt,
110
115
module: _mod, path: [ str] , & index: [ entry < str > ] ) {
111
116
// FIXME factor out add_to_index/start/encode_name/encode_def_id/end ops
112
117
for module. items. each { |it|
113
- if ! ecx . ccx . reachable. contains_key ( it. id) ||
118
+ if ! reachable( ecx , it. id) ||
114
119
!ast_util:: is_exported( it. ident, module) { cont; }
115
120
alt it. node {
116
121
item_const( _, _) {
@@ -235,7 +240,7 @@ fn encode_type_param_bounds(ebml_w: ebml::writer, ecx: @encode_ctxt,
235
240
params: [ ty_param] ) {
236
241
let ty_str_ctxt = @{ ds: def_to_str,
237
242
tcx: ecx. ccx. tcx,
238
- reachable: ecx . ccx . reachable,
243
+ reachable: reachable( ecx , _ ) ,
239
244
abbrevs: tyencode:: ac_use_abbrevs( ecx. type_abbrevs) } ;
240
245
for params. each { |param|
241
246
ebml_w. start_tag( tag_items_data_item_ty_param_bounds) ;
@@ -255,7 +260,7 @@ fn write_type(ecx: @encode_ctxt, ebml_w: ebml::writer, typ: ty::t) {
255
260
let ty_str_ctxt =
256
261
@{ ds: def_to_str,
257
262
tcx: ecx. ccx. tcx,
258
- reachable: ecx . ccx . reachable,
263
+ reachable: reachable( ecx , _ ) ,
259
264
abbrevs: tyencode:: ac_use_abbrevs( ecx. type_abbrevs) } ;
260
265
tyencode:: enc_ty( ebml_w. writer, ty_str_ctxt, typ) ;
261
266
}
@@ -489,7 +494,7 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item,
489
494
let tcx = ecx. ccx. tcx;
490
495
let must_write =
491
496
alt item. node { item_enum( _, _, _) { true } _ { false } } ;
492
- if !must_write && !ecx . ccx . reachable. contains_key ( item. id) { ret; }
497
+ if !must_write && !reachable( ecx , item. id) { ret; }
493
498
494
499
fn add_to_index_( item: @item, ebml_w: ebml:: writer,
495
500
index: @mut [ entry<int>] ) {
@@ -704,7 +709,7 @@ fn encode_info_for_native_item(ecx: @encode_ctxt, ebml_w: ebml::writer,
704
709
nitem: @native_item,
705
710
index: @mut [ entry<int>] ,
706
711
path: ast_map:: path, abi: native_abi) {
707
- if !ecx . ccx . reachable. contains_key ( nitem. id) { ret; }
712
+ if !reachable( ecx , nitem. id) { ret; }
708
713
* index += [ { val: nitem. id, pos: ebml_w. writer. tell( ) } ] ;
709
714
710
715
ebml_w. start_tag( tag_items_data_item) ;
@@ -1019,7 +1024,7 @@ fn encode_metadata(cx: @crate_ctxt, crate: @crate) -> [u8] {
1019
1024
fn encoded_ty( tcx: ty:: ctxt, t: ty:: t) -> str {
1020
1025
let cx = @{ ds: def_to_str,
1021
1026
tcx: tcx,
1022
- reachable: std :: map :: int_hash ( ) ,
1027
+ reachable: { |_id| false } ,
1023
1028
abbrevs: tyencode:: ac_no_abbrevs} ;
1024
1029
let buf = io:: mem_buffer( ) ;
1025
1030
tyencode:: enc_ty( io:: mem_buffer_writer( buf) , cx, t) ;
0 commit comments