@@ -19,7 +19,7 @@ use ast::{_mod, add, arg, arm, attribute, bind_by_ref, bind_infer};
19
19
use ast:: { bind_by_copy, bitand, bitor, bitxor, blk} ;
20
20
use ast:: { blk_check_mode, box, by_copy, by_ref} ;
21
21
use ast:: { crate , crate_cfg, decl, decl_item} ;
22
- use ast:: { decl_local, default_blk, deref, div, enum_def, enum_variant_kind } ;
22
+ use ast:: { decl_local, default_blk, deref, div, enum_def} ;
23
23
use ast:: { expl, expr, expr_, expr_addr_of, expr_match, expr_again} ;
24
24
use ast:: { expr_assign, expr_assign_op, expr_binary, expr_block} ;
25
25
use ast:: { expr_break, expr_call, expr_cast, expr_copy, expr_do_body} ;
@@ -3788,63 +3788,42 @@ pub impl Parser {
3788
3788
fn parse_enum_def ( & self , generics : & ast:: Generics ) -> enum_def {
3789
3789
let mut variants = ~[ ] ;
3790
3790
let mut all_nullary = true , have_disr = false ;
3791
- let mut common_fields = None ;
3792
-
3793
3791
while * self . token != token:: RBRACE {
3794
3792
let variant_attrs = self . parse_outer_attributes ( ) ;
3795
3793
let vlo = self . span . lo ;
3796
3794
3797
- // Is this a common field declaration?
3798
- if self . eat_keyword ( & ~"struct ") {
3799
- if common_fields. is_some ( ) {
3800
- self . fatal ( ~"duplicate declaration of shared fields") ;
3801
- }
3802
- self . expect ( & token:: LBRACE ) ;
3803
- common_fields = Some ( self . parse_struct_def ( ) ) ;
3804
- loop ;
3805
- }
3806
-
3807
3795
let vis = self . parse_visibility ( ) ;
3808
3796
3809
- // Is this a nested enum declaration?
3810
3797
let ident, needs_comma, kind;
3811
3798
let mut args = ~[ ] , disr_expr = None ;
3812
- if self . eat_keyword ( & ~"enum ") {
3813
- ident = self . parse_ident ( ) ;
3814
- self . expect ( & token:: LBRACE ) ;
3815
- let nested_enum_def = self . parse_enum_def ( generics) ;
3816
- kind = enum_variant_kind ( nested_enum_def) ;
3817
- needs_comma = false ;
3818
- } else {
3819
- ident = self . parse_ident ( ) ;
3820
- if self . eat ( & token:: LBRACE ) {
3821
- // Parse a struct variant.
3822
- all_nullary = false ;
3823
- kind = struct_variant_kind ( self . parse_struct_def ( ) ) ;
3824
- } else if * self . token == token:: LPAREN {
3825
- all_nullary = false ;
3826
- let arg_tys = self . parse_unspanned_seq (
3827
- & token:: LPAREN ,
3828
- & token:: RPAREN ,
3829
- seq_sep_trailing_disallowed ( token:: COMMA ) ,
3830
- |p| p. parse_ty ( false )
3831
- ) ;
3832
- for arg_tys. each |ty| {
3833
- args. push ( ast:: variant_arg {
3834
- ty : * ty,
3835
- id : self . get_id ( ) ,
3836
- } ) ;
3837
- }
3838
- kind = tuple_variant_kind ( args) ;
3839
- } else if self . eat ( & token:: EQ ) {
3840
- have_disr = true ;
3841
- disr_expr = Some ( self . parse_expr ( ) ) ;
3842
- kind = tuple_variant_kind ( args) ;
3843
- } else {
3844
- kind = tuple_variant_kind ( ~[ ] ) ;
3799
+ ident = self . parse_ident ( ) ;
3800
+ if self . eat ( & token:: LBRACE ) {
3801
+ // Parse a struct variant.
3802
+ all_nullary = false ;
3803
+ kind = struct_variant_kind ( self . parse_struct_def ( ) ) ;
3804
+ } else if * self . token == token:: LPAREN {
3805
+ all_nullary = false ;
3806
+ let arg_tys = self . parse_unspanned_seq (
3807
+ & token:: LPAREN ,
3808
+ & token:: RPAREN ,
3809
+ seq_sep_trailing_disallowed ( token:: COMMA ) ,
3810
+ |p| p. parse_ty ( false )
3811
+ ) ;
3812
+ for arg_tys. each |ty| {
3813
+ args. push ( ast:: variant_arg {
3814
+ ty : * ty,
3815
+ id : self . get_id ( ) ,
3816
+ } ) ;
3845
3817
}
3846
- needs_comma = true ;
3818
+ kind = tuple_variant_kind ( args) ;
3819
+ } else if self . eat ( & token:: EQ ) {
3820
+ have_disr = true ;
3821
+ disr_expr = Some ( self . parse_expr ( ) ) ;
3822
+ kind = tuple_variant_kind ( args) ;
3823
+ } else {
3824
+ kind = tuple_variant_kind ( ~[ ] ) ;
3847
3825
}
3826
+ needs_comma = true ;
3848
3827
3849
3828
let vr = ast:: variant_ {
3850
3829
name : ident,
@@ -3864,7 +3843,7 @@ pub impl Parser {
3864
3843
enum ") ;
3865
3844
}
3866
3845
3867
- ast:: enum_def { variants : variants, common : common_fields }
3846
+ ast:: enum_def { variants : variants }
3868
3847
}
3869
3848
3870
3849
fn parse_item_enum ( & self ) -> item_info {
@@ -3892,7 +3871,7 @@ pub impl Parser {
3892
3871
return (
3893
3872
id,
3894
3873
item_enum (
3895
- ast:: enum_def { variants : ~[ variant] , common : None } ,
3874
+ ast:: enum_def { variants : ~[ variant] } ,
3896
3875
generics) ,
3897
3876
None
3898
3877
) ;
0 commit comments