2005-05-31 Sebastien Pouliot <sebastien@ximian.com>
[mono.git] / mcs / mcs / enum.cs
index b28b0f58cb7eb138725a32f625cc960eb6e73fa3..f2ed451959df2f06fe27c88745496de91ad36d2a 100644 (file)
@@ -179,13 +179,9 @@ namespace Mono.CSharp {
                        if (TypeBuilder != null)
                                return TypeBuilder;
 
-                       TypeAttributes attr = Modifiers.TypeAttr (ModFlags, IsTopLevel);
-
                        ec = new EmitContext (this, this, Location, null, null, ModFlags, false);
                        ec.InEnumContext = true;
 
-                       attr |= TypeAttributes.Class | TypeAttributes.Sealed;
-
                        if (!(BaseType is TypeLookupExpression)) {
                                Report.Error (1008, Location,
                                              "Type byte, sbyte, short, ushort, int, uint, " +
@@ -217,12 +213,12 @@ namespace Mono.CSharp {
                                
                                ModuleBuilder builder = CodeGen.Module.Builder;
 
-                               TypeBuilder = builder.DefineType (Name, attr, TypeManager.enum_type);
+                               TypeBuilder = builder.DefineType (Name, TypeAttr, TypeManager.enum_type);
                        } else {
                                TypeBuilder builder = Parent.TypeBuilder;
 
                                TypeBuilder = builder.DefineNestedType (
-                                       Basename, attr, TypeManager.enum_type);
+                                       Basename, TypeAttr, TypeManager.enum_type);
                        }
 
                        ec.ContainerType = TypeBuilder;
@@ -725,6 +721,15 @@ namespace Mono.CSharp {
                        }
                }
 
+               protected override TypeAttributes TypeAttr {
+                       get {
+                               return Modifiers.TypeAttr (ModFlags, IsTopLevel) |
+                               TypeAttributes.Class | TypeAttributes.Sealed |
+                               base.TypeAttr;
+                       }
+               }
+
+
                protected override void VerifyObsoleteAttribute()
                {
                        // UnderlyingType is never obsolete