@@ -59,6 +59,15 @@ macro_rules! down_cast_data {
59
59
} ;
60
60
}
61
61
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
+
62
71
pub struct DumpVisitor < ' l , ' tcx : ' l , ' ll , O : DumpOutput + ' ll > {
63
72
save_ctxt : SaveContext < ' l , ' tcx > ,
64
73
tcx : TyCtxt < ' l , ' tcx , ' tcx > ,
@@ -416,13 +425,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
416
425
fn process_struct_field_def ( & mut self , field : & ast:: StructField , parent_id : NodeId ) {
417
426
let field_data = self . save_ctxt . get_field_data ( field, parent_id) ;
418
427
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) ;
426
429
}
427
430
}
428
431
@@ -482,13 +485,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
482
485
|v| v. process_formals ( & decl. inputs , & fn_data. qualname ) ,
483
486
) ;
484
487
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) ;
492
489
}
493
490
494
491
for arg in & decl. inputs {
@@ -511,13 +508,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
511
508
self . nest_tables ( item. id , |v| {
512
509
if let Some ( var_data) = v. save_ctxt . get_item_data ( item) {
513
510
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) ;
521
512
}
522
513
v. visit_ty ( & typ) ;
523
514
v. visit_expr ( expr) ;
@@ -623,10 +614,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
623
614
if !self . span . filter_generated ( sub_span, item. span ) {
624
615
let span = self . span_from_span ( sub_span. expect ( "No span found for struct" ) ) ;
625
616
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) ,
630
618
Def {
631
619
kind,
632
620
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> {
665
653
} ;
666
654
down_cast_data ! ( enum_data, DefData , item. span) ;
667
655
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) ;
672
657
673
658
for variant in & enum_definition. variants {
674
659
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> {
817
802
. map ( |i| :: id_from_node_id ( i. id , & self . save_ctxt ) )
818
803
. collect ( ) ;
819
804
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) ,
824
806
Def {
825
807
kind : DefKind :: Trait ,
826
808
id,
@@ -883,13 +865,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
883
865
fn process_mod ( & mut self , item : & ast:: Item ) {
884
866
if let Some ( mod_data) = self . save_ctxt . get_item_data ( item) {
885
867
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) ;
893
869
}
894
870
}
895
871
@@ -1300,10 +1276,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tc
1300
1276
self . process_macro_use ( item. span ) ;
1301
1277
match item. node {
1302
1278
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) ;
1307
1280
1308
1281
match use_item. node {
1309
1282
ast:: ViewPathSimple ( ident, ref path) => {
@@ -1432,10 +1405,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tc
1432
1405
let id = :: id_from_node_id ( item. id , & self . save_ctxt ) ;
1433
1406
1434
1407
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) ,
1439
1409
Def {
1440
1410
kind : DefKind :: Type ,
1441
1411
id,
@@ -1727,10 +1697,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tc
1727
1697
}
1728
1698
1729
1699
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) ;
1734
1701
1735
1702
match item. node {
1736
1703
ast:: ForeignItemKind :: Fn ( ref decl, ref generics) => {
0 commit comments