@@ -96,7 +96,7 @@ fn find_item(item_id: int, items: ebml::Doc) -> ebml::Doc {
9696
9797// Looks up an item in the given metadata and returns an ebml doc pointing
9898// 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 {
100100 let items = reader:: get_doc ( reader:: Doc ( data) , tag_items) ;
101101 find_item ( item_id, items)
102102}
@@ -291,7 +291,7 @@ fn enum_variant_ids(item: ebml::Doc, cdata: Cmd) -> ~[ast::DefId] {
291291 return ids;
292292}
293293
294- fn item_path ( item_doc : ebml:: Doc ) -> ast_map:: path {
294+ pub fn item_path ( item_doc : ebml:: Doc ) -> ast_map:: path {
295295 let path_doc = reader:: get_doc ( item_doc, tag_path) ;
296296
297297 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 {
332332 }
333333}
334334
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 )
336336 -> DefLike {
337337 let fam = item_family ( item) ;
338338 match fam {
@@ -491,7 +491,7 @@ pub enum DefLike {
491491 DlField
492492}
493493
494- fn def_like_to_def ( def_like : DefLike ) -> ast:: Def {
494+ pub fn def_like_to_def ( def_like : DefLike ) -> ast:: Def {
495495 match def_like {
496496 DlDef ( def) => return def,
497497 DlImpl ( * ) => fail ! ( "found impl in def_like_to_def" ) ,
@@ -544,7 +544,8 @@ impl<'self> EachItemContext<'self> {
544544 fn process_item_and_pop_name ( & mut self ,
545545 doc : ebml:: Doc ,
546546 def_id : ast:: DefId ,
547- old_len : uint )
547+ old_len : uint ,
548+ vis : ast:: visibility )
548549 -> bool {
549550 let def_like = item_to_def_like ( doc, def_id, self . cdata . cnum ) ;
550551 match def_like {
@@ -563,8 +564,6 @@ impl<'self> EachItemContext<'self> {
563564 }
564565 }
565566
566- let vis = item_visibility ( doc) ;
567-
568567 let mut continue = ( self . callback ) ( * self . path_builder , def_like, vis) ;
569568
570569 let family = item_family ( doc) ;
@@ -653,9 +652,12 @@ impl<'self> EachItemContext<'self> {
653652 self . push_name ( token:: ident_to_str ( & child_name) ) ;
654653
655654 // Process this item.
655+
656+ let vis = item_visibility ( child_item_doc) ;
656657 continue = self . process_item_and_pop_name ( child_item_doc,
657658 child_def_id,
658- old_len) ;
659+ old_len,
660+ vis) ;
659661 }
660662 }
661663 continue
@@ -701,12 +703,13 @@ impl<'self> EachItemContext<'self> {
701703
702704 // Get the item.
703705 match maybe_find_item ( def_id. node , other_crates_items) {
704- None => { }
706+ None => { self . pop_name ( old_len ) ; }
705707 Some ( reexported_item_doc) => {
706708 continue = self . process_item_and_pop_name (
707709 reexported_item_doc,
708710 def_id,
709- old_len) ;
711+ old_len,
712+ ast:: public) ;
710713 }
711714 }
712715
@@ -721,7 +724,8 @@ fn each_child_of_item_or_crate(intr: @ident_interner,
721724 cdata : Cmd ,
722725 item_doc : ebml:: Doc ,
723726 get_crate_data : GetCrateDataCb ,
724- callback : & fn ( DefLike , ast:: Ident ) ) {
727+ callback : & fn ( DefLike , ast:: Ident ,
728+ ast:: visibility ) ) {
725729 // Iterate over all children.
726730 let _ = do reader:: tagged_docs ( item_doc, tag_mod_child) |child_info_doc| {
727731 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,
746750 let def_like = item_to_def_like ( child_item_doc,
747751 child_def_id,
748752 cdata. cnum ) ;
749- callback ( def_like, child_name) ;
753+ let visibility = item_visibility ( child_item_doc) ;
754+ callback ( def_like, child_name, visibility) ;
750755
751756 }
752757 }
@@ -788,7 +793,8 @@ fn each_child_of_item_or_crate(intr: @ident_interner,
788793 impl_method_def_id,
789794 cdata. cnum ) ;
790795 callback ( static_method_def_like,
791- static_method_name) ;
796+ static_method_name,
797+ item_visibility ( impl_method_doc) ) ;
792798 }
793799 _ => { }
794800 }
@@ -831,7 +837,8 @@ fn each_child_of_item_or_crate(intr: @ident_interner,
831837 let def_like = item_to_def_like ( child_item_doc,
832838 child_def_id,
833839 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) ) ;
835842 }
836843 }
837844
@@ -844,7 +851,7 @@ pub fn each_child_of_item(intr: @ident_interner,
844851 cdata : Cmd ,
845852 id : ast:: NodeId ,
846853 get_crate_data : GetCrateDataCb ,
847- callback : & fn ( DefLike , ast:: Ident ) ) {
854+ callback : & fn ( DefLike , ast:: Ident , ast :: visibility ) ) {
848855 // Find the item.
849856 let root_doc = reader:: Doc ( cdata. data ) ;
850857 let items = reader:: get_doc ( root_doc, tag_items) ;
@@ -864,7 +871,8 @@ pub fn each_child_of_item(intr: @ident_interner,
864871pub fn each_top_level_item_of_crate ( intr : @ident_interner ,
865872 cdata : Cmd ,
866873 get_crate_data : GetCrateDataCb ,
867- callback : & fn ( DefLike , ast:: Ident ) ) {
874+ callback : & fn ( DefLike , ast:: Ident ,
875+ ast:: visibility ) ) {
868876 let root_doc = reader:: Doc ( cdata. data ) ;
869877 let misc_info_doc = reader:: get_doc ( root_doc, tag_misc_info) ;
870878 let crate_items_doc = reader:: get_doc ( misc_info_doc,
@@ -1161,7 +1169,8 @@ pub fn get_static_methods_if_impl(intr: @ident_interner,
11611169 static_impl_methods. push ( StaticMethodInfo {
11621170 ident : item_name ( intr, impl_method_doc) ,
11631171 def_id : item_def_id ( impl_method_doc, cdata) ,
1164- purity : purity
1172+ purity : purity,
1173+ vis : item_visibility ( impl_method_doc) ,
11651174 } ) ;
11661175 }
11671176 _ => { }
0 commit comments