@@ -59,6 +59,15 @@ macro_rules! down_cast_data {
5959 } ;
6060}
6161
62+ macro_rules! access_from {
63+ ( $save_ctxt: expr, $item: expr) => {
64+ Access {
65+ public: $item. vis == ast:: Visibility :: Public ,
66+ reachable: $save_ctxt. analysis. access_levels. is_reachable( $item. id) ,
67+ }
68+ }
69+ }
70+
6271pub struct DumpVisitor < ' l , ' tcx : ' l , ' ll , O : DumpOutput + ' ll > {
6372 save_ctxt : SaveContext < ' l , ' tcx > ,
6473 tcx : TyCtxt < ' l , ' tcx , ' tcx > ,
@@ -416,13 +425,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
416425 fn process_struct_field_def ( & mut self , field : & ast:: StructField , parent_id : NodeId ) {
417426 let field_data = self . save_ctxt . get_field_data ( field, parent_id) ;
418427 if let Some ( field_data) = field_data {
419- self . dumper . dump_def (
420- & Access {
421- public : field. vis == ast:: Visibility :: Public ,
422- reachable : self . save_ctxt . analysis . access_levels . is_reachable ( field. id ) ,
423- } ,
424- field_data,
425- ) ;
428+ self . dumper . dump_def ( & access_from ! ( self . save_ctxt, field) , field_data) ;
426429 }
427430 }
428431
@@ -482,13 +485,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
482485 |v| v. process_formals ( & decl. inputs , & fn_data. qualname ) ,
483486 ) ;
484487 self . process_generic_params ( ty_params, item. span , & fn_data. qualname , item. id ) ;
485- self . dumper . dump_def (
486- & Access {
487- public : item. vis == ast:: Visibility :: Public ,
488- reachable : self . save_ctxt . analysis . access_levels . is_reachable ( item. id ) ,
489- } ,
490- fn_data,
491- ) ;
488+ self . dumper . dump_def ( & access_from ! ( self . save_ctxt, item) , fn_data) ;
492489 }
493490
494491 for arg in & decl. inputs {
@@ -511,13 +508,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
511508 self . nest_tables ( item. id , |v| {
512509 if let Some ( var_data) = v. save_ctxt . get_item_data ( item) {
513510 down_cast_data ! ( var_data, DefData , item. span) ;
514- v. dumper . dump_def (
515- & Access {
516- public : item. vis == ast:: Visibility :: Public ,
517- reachable : v. save_ctxt . analysis . access_levels . is_reachable ( item. id ) ,
518- } ,
519- var_data,
520- ) ;
511+ v. dumper . dump_def ( & access_from ! ( v. save_ctxt, item) , var_data) ;
521512 }
522513 v. visit_ty ( & typ) ;
523514 v. visit_expr ( expr) ;
@@ -623,10 +614,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
623614 if !self . span . filter_generated ( sub_span, item. span ) {
624615 let span = self . span_from_span ( sub_span. expect ( "No span found for struct" ) ) ;
625616 self . dumper . dump_def (
626- & Access {
627- public : item. vis == ast:: Visibility :: Public ,
628- reachable : self . save_ctxt . analysis . access_levels . is_reachable ( item. id ) ,
629- } ,
617+ & access_from ! ( self . save_ctxt, item) ,
630618 Def {
631619 kind,
632620 id : :: id_from_node_id ( item. id , & self . save_ctxt ) ,
@@ -665,10 +653,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
665653 } ;
666654 down_cast_data ! ( enum_data, DefData , item. span) ;
667655
668- let access = Access {
669- public : item. vis == ast:: Visibility :: Public ,
670- reachable : self . save_ctxt . analysis . access_levels . is_reachable ( item. id ) ,
671- } ;
656+ let access = access_from ! ( self . save_ctxt, item) ;
672657
673658 for variant in & enum_definition. variants {
674659 let name = variant. node . name . name . to_string ( ) ;
@@ -817,10 +802,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
817802 . map ( |i| :: id_from_node_id ( i. id , & self . save_ctxt ) )
818803 . collect ( ) ;
819804 self . dumper . dump_def (
820- & Access {
821- public : item. vis == ast:: Visibility :: Public ,
822- reachable : self . save_ctxt . analysis . access_levels . is_reachable ( item. id ) ,
823- } ,
805+ & access_from ! ( self . save_ctxt, item) ,
824806 Def {
825807 kind : DefKind :: Trait ,
826808 id,
@@ -883,13 +865,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
883865 fn process_mod ( & mut self , item : & ast:: Item ) {
884866 if let Some ( mod_data) = self . save_ctxt . get_item_data ( item) {
885867 down_cast_data ! ( mod_data, DefData , item. span) ;
886- self . dumper . dump_def (
887- & Access {
888- public : item. vis == ast:: Visibility :: Public ,
889- reachable : self . save_ctxt . analysis . access_levels . is_reachable ( item. id ) ,
890- } ,
891- mod_data,
892- ) ;
868+ self . dumper . dump_def ( & access_from ! ( self . save_ctxt, item) , mod_data) ;
893869 }
894870 }
895871
@@ -1300,10 +1276,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tc
13001276 self . process_macro_use ( item. span ) ;
13011277 match item. node {
13021278 Use ( ref use_item) => {
1303- let access = Access {
1304- public : item. vis == ast:: Visibility :: Public ,
1305- reachable : self . save_ctxt . analysis . access_levels . is_reachable ( item. id ) ,
1306- } ;
1279+ let access = access_from ! ( self . save_ctxt, item) ;
13071280
13081281 match use_item. node {
13091282 ast:: ViewPathSimple ( ident, ref path) => {
@@ -1432,10 +1405,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tc
14321405 let id = :: id_from_node_id ( item. id , & self . save_ctxt ) ;
14331406
14341407 self . dumper . dump_def (
1435- & Access {
1436- public : item. vis == ast:: Visibility :: Public ,
1437- reachable : self . save_ctxt . analysis . access_levels . is_reachable ( item. id ) ,
1438- } ,
1408+ & access_from ! ( self . save_ctxt, item) ,
14391409 Def {
14401410 kind : DefKind :: Type ,
14411411 id,
@@ -1727,10 +1697,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tc
17271697 }
17281698
17291699 fn visit_foreign_item ( & mut self , item : & ' l ast:: ForeignItem ) {
1730- let access = Access {
1731- public : item. vis == ast:: Visibility :: Public ,
1732- reachable : self . save_ctxt . analysis . access_levels . is_reachable ( item. id ) ,
1733- } ;
1700+ let access = access_from ! ( self . save_ctxt, item) ;
17341701
17351702 match item. node {
17361703 ast:: ForeignItemKind :: Fn ( ref decl, ref generics) => {
0 commit comments