@@ -96,7 +96,7 @@ fn find_item(item_id: int, items: ebml::Doc) -> ebml::Doc {
96
96
97
97
// Looks up an item in the given metadata and returns an ebml doc pointing
98
98
// to the item data.
99
- fn lookup_item ( item_id : int , data : @~[ u8 ] ) -> ebml:: Doc {
99
+ pub fn lookup_item ( item_id : int , data : @~[ u8 ] ) -> ebml:: Doc {
100
100
let items = reader:: get_doc ( reader:: Doc ( data) , tag_items) ;
101
101
find_item ( item_id, items)
102
102
}
@@ -291,7 +291,7 @@ fn enum_variant_ids(item: ebml::Doc, cdata: Cmd) -> ~[ast::DefId] {
291
291
return ids;
292
292
}
293
293
294
- fn item_path ( item_doc : ebml:: Doc ) -> ast_map:: path {
294
+ pub fn item_path ( item_doc : ebml:: Doc ) -> ast_map:: path {
295
295
let path_doc = reader:: get_doc ( item_doc, tag_path) ;
296
296
297
297
let len_doc = reader:: get_doc ( path_doc, tag_path_len) ;
@@ -332,7 +332,7 @@ fn item_name(intr: @ident_interner, item: ebml::Doc) -> ast::Ident {
332
332
}
333
333
}
334
334
335
- fn item_to_def_like ( item : ebml:: Doc , did : ast:: DefId , cnum : ast:: CrateNum )
335
+ pub fn item_to_def_like ( item : ebml:: Doc , did : ast:: DefId , cnum : ast:: CrateNum )
336
336
-> DefLike {
337
337
let fam = item_family ( item) ;
338
338
match fam {
@@ -491,7 +491,7 @@ pub enum DefLike {
491
491
DlField
492
492
}
493
493
494
- fn def_like_to_def ( def_like : DefLike ) -> ast:: Def {
494
+ pub fn def_like_to_def ( def_like : DefLike ) -> ast:: Def {
495
495
match def_like {
496
496
DlDef ( def) => return def,
497
497
DlImpl ( * ) => fail ! ( "found impl in def_like_to_def" ) ,
@@ -544,7 +544,8 @@ impl<'self> EachItemContext<'self> {
544
544
fn process_item_and_pop_name ( & mut self ,
545
545
doc : ebml:: Doc ,
546
546
def_id : ast:: DefId ,
547
- old_len : uint )
547
+ old_len : uint ,
548
+ vis : ast:: visibility )
548
549
-> bool {
549
550
let def_like = item_to_def_like ( doc, def_id, self . cdata . cnum ) ;
550
551
match def_like {
@@ -563,8 +564,6 @@ impl<'self> EachItemContext<'self> {
563
564
}
564
565
}
565
566
566
- let vis = item_visibility ( doc) ;
567
-
568
567
let mut continue = ( self . callback ) ( * self . path_builder , def_like, vis) ;
569
568
570
569
let family = item_family ( doc) ;
@@ -653,9 +652,12 @@ impl<'self> EachItemContext<'self> {
653
652
self . push_name ( token:: ident_to_str ( & child_name) ) ;
654
653
655
654
// Process this item.
655
+
656
+ let vis = item_visibility ( child_item_doc) ;
656
657
continue = self . process_item_and_pop_name ( child_item_doc,
657
658
child_def_id,
658
- old_len) ;
659
+ old_len,
660
+ vis) ;
659
661
}
660
662
}
661
663
continue
@@ -701,12 +703,13 @@ impl<'self> EachItemContext<'self> {
701
703
702
704
// Get the item.
703
705
match maybe_find_item ( def_id. node , other_crates_items) {
704
- None => { }
706
+ None => { self . pop_name ( old_len ) ; }
705
707
Some ( reexported_item_doc) => {
706
708
continue = self . process_item_and_pop_name (
707
709
reexported_item_doc,
708
710
def_id,
709
- old_len) ;
711
+ old_len,
712
+ ast:: public) ;
710
713
}
711
714
}
712
715
@@ -721,7 +724,8 @@ fn each_child_of_item_or_crate(intr: @ident_interner,
721
724
cdata : Cmd ,
722
725
item_doc : ebml:: Doc ,
723
726
get_crate_data : GetCrateDataCb ,
724
- callback : & fn ( DefLike , ast:: Ident ) ) {
727
+ callback : & fn ( DefLike , ast:: Ident ,
728
+ ast:: visibility ) ) {
725
729
// Iterate over all children.
726
730
let _ = do reader:: tagged_docs ( item_doc, tag_mod_child) |child_info_doc| {
727
731
let child_def_id = reader:: with_doc_data ( child_info_doc,
@@ -746,7 +750,8 @@ fn each_child_of_item_or_crate(intr: @ident_interner,
746
750
let def_like = item_to_def_like ( child_item_doc,
747
751
child_def_id,
748
752
cdata. cnum ) ;
749
- callback ( def_like, child_name) ;
753
+ let visibility = item_visibility ( child_item_doc) ;
754
+ callback ( def_like, child_name, visibility) ;
750
755
751
756
}
752
757
}
@@ -788,7 +793,8 @@ fn each_child_of_item_or_crate(intr: @ident_interner,
788
793
impl_method_def_id,
789
794
cdata. cnum ) ;
790
795
callback ( static_method_def_like,
791
- static_method_name) ;
796
+ static_method_name,
797
+ item_visibility ( impl_method_doc) ) ;
792
798
}
793
799
_ => { }
794
800
}
@@ -831,7 +837,8 @@ fn each_child_of_item_or_crate(intr: @ident_interner,
831
837
let def_like = item_to_def_like ( child_item_doc,
832
838
child_def_id,
833
839
cdata. cnum ) ;
834
- callback ( def_like, token:: str_to_ident ( name) ) ;
840
+ callback ( def_like, token:: str_to_ident ( name) ,
841
+ item_visibility ( child_item_doc) ) ;
835
842
}
836
843
}
837
844
@@ -844,7 +851,7 @@ pub fn each_child_of_item(intr: @ident_interner,
844
851
cdata : Cmd ,
845
852
id : ast:: NodeId ,
846
853
get_crate_data : GetCrateDataCb ,
847
- callback : & fn ( DefLike , ast:: Ident ) ) {
854
+ callback : & fn ( DefLike , ast:: Ident , ast :: visibility ) ) {
848
855
// Find the item.
849
856
let root_doc = reader:: Doc ( cdata. data ) ;
850
857
let items = reader:: get_doc ( root_doc, tag_items) ;
@@ -864,7 +871,8 @@ pub fn each_child_of_item(intr: @ident_interner,
864
871
pub fn each_top_level_item_of_crate ( intr : @ident_interner ,
865
872
cdata : Cmd ,
866
873
get_crate_data : GetCrateDataCb ,
867
- callback : & fn ( DefLike , ast:: Ident ) ) {
874
+ callback : & fn ( DefLike , ast:: Ident ,
875
+ ast:: visibility ) ) {
868
876
let root_doc = reader:: Doc ( cdata. data ) ;
869
877
let misc_info_doc = reader:: get_doc ( root_doc, tag_misc_info) ;
870
878
let crate_items_doc = reader:: get_doc ( misc_info_doc,
@@ -1161,7 +1169,8 @@ pub fn get_static_methods_if_impl(intr: @ident_interner,
1161
1169
static_impl_methods. push ( StaticMethodInfo {
1162
1170
ident : item_name ( intr, impl_method_doc) ,
1163
1171
def_id : item_def_id ( impl_method_doc, cdata) ,
1164
- purity : purity
1172
+ purity : purity,
1173
+ vis : item_visibility ( impl_method_doc) ,
1165
1174
} ) ;
1166
1175
}
1167
1176
_ => { }
0 commit comments