@@ -604,65 +604,60 @@ impl <'l, 'tcx> DumpCsvVisitor<'l, 'tcx> {
604
604
item : & ast:: Item ,
605
605
enum_definition : & ast:: EnumDef ,
606
606
ty_params : & ast:: Generics ) {
607
- let enum_name = format ! ( "::{}" , self . analysis. ty_cx. map. path_to_string( item. id) ) ;
608
- let val = self . span . snippet ( item. span ) ;
609
- match self . span . sub_span_after_keyword ( item. span , keywords:: Enum ) {
610
- Some ( sub_span) => self . fmt . enum_str ( item. span ,
611
- Some ( sub_span) ,
612
- item. id ,
613
- & enum_name[ ..] ,
614
- self . cur_scope ,
615
- & val[ ..] ) ,
616
- None => self . sess . span_bug ( item. span ,
617
- & format ! ( "Could not find subspan for enum {}" ,
618
- enum_name) ) ,
619
- }
620
- for variant in & enum_definition. variants {
621
- let name = get_ident ( variant. node . name ) ;
622
- let name = & name;
623
- let mut qualname = enum_name. clone ( ) ;
624
- qualname. push_str ( "::" ) ;
625
- qualname. push_str ( name) ;
626
- let val = self . span . snippet ( variant. span ) ;
627
- match variant. node . kind {
628
- ast:: TupleVariantKind ( ref args) => {
629
- // first ident in span is the variant's name
630
- self . fmt . tuple_variant_str ( variant. span ,
631
- self . span . span_for_first_ident ( variant. span ) ,
632
- variant. node . id ,
633
- name,
634
- & qualname[ ..] ,
635
- & enum_name[ ..] ,
636
- & val[ ..] ,
637
- item. id ) ;
638
- for arg in args {
639
- self . visit_ty ( & * arg. ty ) ;
607
+ let enum_data = self . save_ctxt . get_item_data ( item) ;
608
+ if let super :: Data :: EnumData ( enum_data) = enum_data {
609
+ self . fmt . enum_str ( item. span ,
610
+ Some ( enum_data. span ) ,
611
+ enum_data. id ,
612
+ & enum_data. qualname ,
613
+ self . cur_scope ,
614
+ & enum_data. value ) ;
615
+ for variant in & enum_definition. variants {
616
+ let name = & get_ident ( variant. node . name ) ;
617
+ let mut qualname = enum_data. qualname . clone ( ) ;
618
+ qualname. push_str ( "::" ) ;
619
+ qualname. push_str ( name) ;
620
+ let val = self . span . snippet ( variant. span ) ;
621
+ match variant. node . kind {
622
+ ast:: TupleVariantKind ( ref args) => {
623
+ // first ident in span is the variant's name
624
+ self . fmt . tuple_variant_str ( variant. span ,
625
+ self . span . span_for_first_ident ( variant. span ) ,
626
+ variant. node . id ,
627
+ name,
628
+ & qualname,
629
+ & enum_data. qualname ,
630
+ & val,
631
+ item. id ) ;
632
+ for arg in args {
633
+ self . visit_ty ( & * arg. ty ) ;
634
+ }
640
635
}
641
- }
642
- ast:: StructVariantKind ( ref struct_def) => {
643
- let ctor_id = match struct_def. ctor_id {
644
- Some ( node_id) => node_id,
645
- None => -1 ,
646
- } ;
647
- self . fmt . struct_variant_str (
648
- variant. span ,
649
- self . span . span_for_first_ident ( variant. span ) ,
650
- variant. node . id ,
651
- ctor_id,
652
- & qualname[ ..] ,
653
- & enum_name[ ..] ,
654
- & val[ ..] ,
655
- item. id ) ;
656
-
657
- for field in & struct_def. fields {
658
- self . process_struct_field_def ( field, & qualname, variant. node . id ) ;
659
- self . visit_ty ( & * field. node . ty ) ;
636
+ ast:: StructVariantKind ( ref struct_def) => {
637
+ let ctor_id = match struct_def. ctor_id {
638
+ Some ( node_id) => node_id,
639
+ None => -1 ,
640
+ } ;
641
+ self . fmt . struct_variant_str ( variant. span ,
642
+ self . span . span_for_first_ident ( variant. span ) ,
643
+ variant. node . id ,
644
+ ctor_id,
645
+ & qualname,
646
+ & enum_data. qualname ,
647
+ & val,
648
+ item. id ) ;
649
+
650
+ for field in & struct_def. fields {
651
+ self . process_struct_field_def ( field, & qualname, variant. node . id ) ;
652
+ self . visit_ty ( & * field. node . ty ) ;
653
+ }
660
654
}
661
655
}
662
656
}
657
+ self . process_generic_params ( ty_params, item. span , & enum_data. qualname , item. id ) ;
658
+ } else {
659
+ self . sess . span_bug ( item. span , "expected EnumData" ) ;
663
660
}
664
-
665
- self . process_generic_params ( ty_params, item. span , & enum_name[ ..] , item. id ) ;
666
661
}
667
662
668
663
fn process_impl ( & mut self ,
0 commit comments