@@ -521,39 +521,41 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
521521 item : & ' l ast:: Item ,
522522 def : & ' l ast:: VariantData ,
523523 ty_params : & ' l ast:: Generics ) {
524+ debug ! ( "process_struct {:?} {:?}" , item, item. span) ;
524525 let name = item. ident . to_string ( ) ;
525526 let qualname = format ! ( "::{}" , self . tcx. node_path_str( item. id) ) ;
526527
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 ! [ ] )
548555 } ;
549556
550557 if !self . span . filter_generated ( sub_span, item. span ) {
551558 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- } ;
557559 self . dumper . dump_def ( item. vis == ast:: Visibility :: Public , Def {
558560 kind,
559561 id : :: id_from_node_id ( item. id , & self . save_ctxt ) ,
0 commit comments