@@ -521,39 +521,41 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
521
521
item : & ' l ast:: Item ,
522
522
def : & ' l ast:: VariantData ,
523
523
ty_params : & ' l ast:: Generics ) {
524
+ debug ! ( "process_struct {:?} {:?}" , item, item. span) ;
524
525
let name = item. ident . to_string ( ) ;
525
526
let qualname = format ! ( "::{}" , self . tcx. node_path_str( item. id) ) ;
526
527
527
- let sub_span = self . span . sub_span_after_keyword ( item. span , keywords:: Struct ) ;
528
- let ( value, fields) =
529
- if let ast:: ItemKind :: Struct ( ast:: VariantData :: Struct ( ref fields, _) , _) = item. node
530
- {
531
- let include_priv_fields = !self . save_ctxt . config . pub_only ;
532
- let fields_str = fields
533
- . iter ( )
534
- . enumerate ( )
535
- . filter_map ( |( i, f) | {
536
- if include_priv_fields || f. vis == ast:: Visibility :: Public {
537
- f. ident . map ( |i| i. to_string ( ) ) . or_else ( || Some ( i. to_string ( ) ) )
538
- } else {
539
- None
540
- }
541
- } )
542
- . collect :: < Vec < _ > > ( )
543
- . join ( ", " ) ;
544
- let value = format ! ( "{} {{ {} }}" , name, fields_str) ;
545
- ( value, fields. iter ( ) . map ( |f| :: id_from_node_id ( f. id , & self . save_ctxt ) ) . collect ( ) )
546
- } else {
547
- ( String :: new ( ) , vec ! [ ] )
528
+ let ( kind, keyword) = match item. node {
529
+ ast:: ItemKind :: Struct ( _, _) => ( DefKind :: Struct , keywords:: Struct ) ,
530
+ ast:: ItemKind :: Union ( _, _) => ( DefKind :: Union , keywords:: Union ) ,
531
+ _ => unreachable ! ( ) ,
532
+ } ;
533
+
534
+ let sub_span = self . span . sub_span_after_keyword ( item. span , keyword) ;
535
+ let ( value, fields) = match item. node {
536
+ ast:: ItemKind :: Struct ( ast:: VariantData :: Struct ( ref fields, _) , _) |
537
+ ast:: ItemKind :: Union ( ast:: VariantData :: Struct ( ref fields, _) , _) => {
538
+ let include_priv_fields = !self . save_ctxt . config . pub_only ;
539
+ let fields_str = fields
540
+ . iter ( )
541
+ . enumerate ( )
542
+ . filter_map ( |( i, f) | {
543
+ if include_priv_fields || f. vis == ast:: Visibility :: Public {
544
+ f. ident . map ( |i| i. to_string ( ) ) . or_else ( || Some ( i. to_string ( ) ) )
545
+ } else {
546
+ None
547
+ }
548
+ } )
549
+ . collect :: < Vec < _ > > ( )
550
+ . join ( ", " ) ;
551
+ let value = format ! ( "{} {{ {} }}" , name, fields_str) ;
552
+ ( value, fields. iter ( ) . map ( |f| :: id_from_node_id ( f. id , & self . save_ctxt ) ) . collect ( ) )
553
+ }
554
+ _ => ( String :: new ( ) , vec ! [ ] )
548
555
} ;
549
556
550
557
if !self . span . filter_generated ( sub_span, item. span ) {
551
558
let span = self . span_from_span ( sub_span. expect ( "No span found for struct" ) ) ;
552
- let kind = match item. node {
553
- ast:: ItemKind :: Struct ( _, _) => DefKind :: Struct ,
554
- ast:: ItemKind :: Union ( _, _) => DefKind :: Union ,
555
- _ => unreachable ! ( ) ,
556
- } ;
557
559
self . dumper . dump_def ( item. vis == ast:: Visibility :: Public , Def {
558
560
kind,
559
561
id : :: id_from_node_id ( item. id , & self . save_ctxt ) ,
0 commit comments