@@ -16,9 +16,9 @@ use metadata::cstore;
16
16
use metadata:: decoder;
17
17
use metadata:: tyencode;
18
18
use middle:: ty:: { node_id_to_type, lookup_item_type} ;
19
+ use middle:: astencode;
19
20
use middle:: ty;
20
21
use middle:: typeck;
21
- use middle:: astencode;
22
22
use middle;
23
23
24
24
use std:: hash:: HashUtil ;
@@ -58,6 +58,7 @@ pub struct EncodeParams<'self> {
58
58
diag : @mut span_handler ,
59
59
tcx : ty:: ctxt ,
60
60
reexports2 : middle:: resolve:: ExportMap2 ,
61
+ exported_items : @mut middle:: resolve:: ExportedItems ,
61
62
item_symbols : & ' self HashMap < ast:: NodeId , ~str > ,
62
63
discrim_symbols : & ' self HashMap < ast:: NodeId , @str > ,
63
64
link_meta : & ' self LinkMeta ,
@@ -86,6 +87,7 @@ pub struct EncodeContext<'self> {
86
87
tcx : ty:: ctxt ,
87
88
stats : @mut Stats ,
88
89
reexports2 : middle:: resolve:: ExportMap2 ,
90
+ exported_items : @mut middle:: resolve:: ExportedItems ,
89
91
item_symbols : & ' self HashMap < ast:: NodeId , ~str > ,
90
92
discrim_symbols : & ' self HashMap < ast:: NodeId , @str > ,
91
93
link_meta : & ' self LinkMeta ,
@@ -808,7 +810,8 @@ fn encode_info_for_item(ecx: &EncodeContext,
808
810
ebml_w : & mut writer:: Encoder ,
809
811
item: @item,
810
812
index : @mut ~[ entry < i64 > ] ,
811
- path : & [ ast_map:: path_elt ] ) {
813
+ path : & [ ast_map:: path_elt ] ,
814
+ vis : ast:: visibility ) {
812
815
let tcx = ecx. tcx ;
813
816
814
817
fn add_to_index_ ( item : @item, ebml_w : & writer:: Encoder ,
@@ -836,6 +839,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
836
839
encode_name ( ecx, ebml_w, item. ident ) ;
837
840
encode_path ( ecx, ebml_w, path, ast_map:: path_name ( item. ident ) ) ;
838
841
( ecx. encode_inlined_item ) ( ecx, ebml_w, path, ii_item ( item) ) ;
842
+ encode_visibility ( ebml_w, vis) ;
839
843
ebml_w. end_tag ( ) ;
840
844
}
841
845
item_fn( _, purity, _, ref generics, _) => {
@@ -853,6 +857,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
853
857
} else {
854
858
encode_symbol ( ecx, ebml_w, item. id ) ;
855
859
}
860
+ encode_visibility ( ebml_w, vis) ;
856
861
ebml_w. end_tag ( ) ;
857
862
}
858
863
item_mod( ref m) => {
@@ -879,7 +884,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
879
884
ebml_w. wr_str ( def_to_str ( local_def ( foreign_item. id ) ) ) ;
880
885
ebml_w. end_tag ( ) ;
881
886
}
882
-
887
+ encode_visibility ( ebml_w , vis ) ;
883
888
ebml_w. end_tag ( ) ;
884
889
}
885
890
item_ty( * ) => {
@@ -891,6 +896,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
891
896
encode_name ( ecx, ebml_w, item. ident ) ;
892
897
encode_path ( ecx, ebml_w, path, ast_map:: path_name ( item. ident ) ) ;
893
898
encode_region_param ( ecx, ebml_w, item) ;
899
+ encode_visibility ( ebml_w, vis) ;
894
900
ebml_w. end_tag ( ) ;
895
901
}
896
902
item_enum( ref enum_definition, ref generics) => {
@@ -907,6 +913,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
907
913
( ecx. encode_inlined_item ) ( ecx, ebml_w, path, ii_item ( item) ) ;
908
914
encode_path ( ecx, ebml_w, path, ast_map:: path_name ( item. ident ) ) ;
909
915
encode_region_param ( ecx, ebml_w, item) ;
916
+ encode_visibility ( ebml_w, vis) ;
910
917
ebml_w. end_tag ( ) ;
911
918
912
919
encode_enum_variant_info ( ecx,
@@ -938,6 +945,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
938
945
encode_attributes ( ebml_w, item. attrs ) ;
939
946
encode_path ( ecx, ebml_w, path, ast_map:: path_name ( item. ident ) ) ;
940
947
encode_region_param ( ecx, ebml_w, item) ;
948
+ encode_visibility ( ebml_w, vis) ;
941
949
942
950
/* Encode def_ids for each field and method
943
951
for methods, write all the stuff get_trait_method
@@ -1187,7 +1195,12 @@ fn my_visit_item(i:@item, items: ast_map::map, ebml_w:&writer::Encoder,
1187
1195
let mut ebml_w = ebml_w. clone ( ) ;
1188
1196
// See above
1189
1197
let ecx : & EncodeContext = unsafe { cast:: transmute ( ecx_ptr) } ;
1190
- encode_info_for_item ( ecx, & mut ebml_w, i, index, * pt) ;
1198
+ let vis = if ecx. exported_items . contains ( & i. id ) {
1199
+ ast:: public
1200
+ } else {
1201
+ ast:: inherited
1202
+ } ;
1203
+ encode_info_for_item ( ecx, & mut ebml_w, i, index, * pt, vis) ;
1191
1204
}
1192
1205
_ => fail ! ( "bad item" )
1193
1206
}
@@ -1592,6 +1605,7 @@ pub fn encode_metadata(parms: EncodeParams, crate: &Crate) -> ~[u8] {
1592
1605
diag,
1593
1606
tcx,
1594
1607
reexports2,
1608
+ exported_items,
1595
1609
discrim_symbols,
1596
1610
cstore,
1597
1611
encode_inlined_item,
@@ -1606,6 +1620,7 @@ pub fn encode_metadata(parms: EncodeParams, crate: &Crate) -> ~[u8] {
1606
1620
tcx : tcx,
1607
1621
stats : stats,
1608
1622
reexports2 : reexports2,
1623
+ exported_items : exported_items,
1609
1624
item_symbols : item_symbols,
1610
1625
discrim_symbols : discrim_symbols,
1611
1626
link_meta : link_meta,
4 commit comments
bors commentedon Aug 23, 2013
saw approval from pcwalton
at alexcrichton@3a56ab2
bors commentedon Aug 23, 2013
merging alexcrichton/rust/correct-item-visibility = 3a56ab2 into auto
bors commentedon Aug 23, 2013
alexcrichton/rust/correct-item-visibility = 3a56ab2 merged ok, testing candidate = 62e39942
bors commentedon Aug 23, 2013
some tests failed:
failure: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-t/builds/162
exception: http://buildbot.rust-lang.org/builders/auto-mac-32-opt/builds/1053
exception: http://buildbot.rust-lang.org/builders/auto-mac-64-opt/builds/1056
exception: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-c/builds/162
exception: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-t/builds/162
exception: http://buildbot.rust-lang.org/builders/auto-linux-32-opt/builds/1071
exception: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-c/builds/162
exception: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-t/builds/162
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-opt/builds/1071
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-c/builds/162
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-x-android/builds/244
exception: http://buildbot.rust-lang.org/builders/auto-win-32-opt/builds/1056
exception: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-c/builds/162
exception: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-t/builds/162
exception: http://buildbot.rust-lang.org/builders/auto-bsd-64-opt/builds/842