[mcs] Don't wrap enum constants during folding when result is reduced
authorMarek Safar <marek.safar@gmail.com>
Wed, 4 Jun 2014 12:30:03 +0000 (14:30 +0200)
committerMarek Safar <marek.safar@gmail.com>
Wed, 4 Jun 2014 12:41:24 +0000 (14:41 +0200)
mcs/mcs/cfold.cs
mcs/tests/test-894.cs [new file with mode: 0644]

index bea0ee06df05bf7a2e542eacd6dd617bccbb801a..72f3a9c3620eb72e7c9a3e6c11afda7fd69c922d 100644 (file)
@@ -367,8 +367,8 @@ namespace Mono.CSharp {
                                                return null;
 
                                        result = result.Reduce (ec, lt);
-                                       if (result == null)
-                                               return null;
+                                       if (result == null || lt.IsEnum)
+                                               return result;
 
                                        return new EnumConstant (result, lt);
                                }
diff --git a/mcs/tests/test-894.cs b/mcs/tests/test-894.cs
new file mode 100644 (file)
index 0000000..259a66c
--- /dev/null
@@ -0,0 +1,19 @@
+using System;
+
+[AttributeUsage (AttributeTargets.All + 0xFFFFFE + 1)]
+class A1Attribute : Attribute
+{
+}
+
+[AttributeUsage ((AttributeTargets) 0xffff)]
+class A2Attribute : Attribute
+{
+}
+
+public class Test
+{
+       public static void Main ()
+       {
+               
+       }
+}
\ No newline at end of file