2007-10-19 Marek Habersack <mhabersack@novell.com>
[mono.git] / mcs / mcs / modifiers.cs
index 864f058da6691c1813db1ed621c10d3ed9f75e9b..dae3dd86a09a5e6323df8e680d7394d3b4db07a3 100644 (file)
@@ -25,18 +25,19 @@ namespace Mono.CSharp {
                public const int EXTERN    = 0x0800;
                public const int VOLATILE  = 0x1000;
                public const int UNSAFE    = 0x2000;
-               public const int TOP       = 0x2000;
+               private const int TOP      = 0x2000;
 
                public const int PROPERTY_CUSTOM = 0x4000; // Custom property modifier
 
                //
                // We use this internally to flag that the method contains an iterator
                //
-               public const int METHOD_YIELDS          = 0x8000;
-               public const int METHOD_GENERIC         = 0x10000;
-               public const int PARTIAL                = 0x20000;
-               public const int DEFAULT_ACCESS_MODIFER = 0x40000;
-               public const int METHOD_EXTENSION       = 0x80000;
+               public const int METHOD_YIELDS                  = 0x8000;
+               public const int METHOD_GENERIC                 = 0x10000;
+               public const int PARTIAL                                        = 0x20000;
+               public const int DEFAULT_ACCESS_MODIFER = 0x40000;
+               public const int METHOD_EXTENSION               = 0x80000;
+               public const int COMPILER_GENERATED             = 0x100000;
 
                public const int Accessibility =
                        PUBLIC | PROTECTED | INTERNAL | PRIVATE;
@@ -203,7 +204,7 @@ namespace Mono.CSharp {
                // </summary>
                public static int Check (int allowed, int mod, int def_access, Location l)
                {
-                       int invalid_flags  = (~allowed) & mod;
+                       int invalid_flags  = (~allowed) & (mod & (Modifiers.TOP - 1));
                        int i;
 
                        if (invalid_flags == 0){