GROOVY-11062: Annotation collection isn't properly handling enum annotation attribute values
diff --git a/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java b/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
index 5e46f81..a28cb9e 100644
--- a/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
+++ b/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
@@ -994,6 +994,8 @@
                 val = writer.toString();
             } else if (constValue instanceof Number || constValue instanceof Boolean) {
                 val = constValue.toString();
+            } else if (constValue instanceof Enum) {
+                val = constValue.getClass().getName() + "." + constValue.toString();
             } else {
                 val = "\"" + escapeSpecialChars(constValue.toString()) + "\"";
                 replaceDollars = false;
diff --git a/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java b/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
index 0505a6a..2c5e090 100644
--- a/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
+++ b/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
@@ -52,6 +52,8 @@
 import java.util.Map;
 import java.util.Set;
 
+import static org.codehaus.groovy.ast.tools.GeneralUtils.classX;
+import static org.codehaus.groovy.ast.tools.GeneralUtils.propX;
 import static org.codehaus.groovy.transform.trait.TraitComposer.COMPILESTATIC_CLASSNODE;
 import static org.objectweb.asm.Opcodes.ACC_ABSTRACT;
 import static org.objectweb.asm.Opcodes.ACC_ANNOTATION;
@@ -158,7 +160,8 @@
             if (e instanceof AnnotationConstantExpression) {
                 AnnotationConstantExpression ace = (AnnotationConstantExpression) e;
                 return serialize((AnnotationNode) ace.getValue());
-            } else if (e instanceof ListExpression) {
+            }
+            if (e instanceof ListExpression) {
                 boolean annotationConstant = false;
                 ListExpression le = (ListExpression) e;
                 List<Expression> list = le.getExpressions();
@@ -171,6 +174,12 @@
                 if (annotationConstant) type = type.makeArray();
                 return new ArrayExpression(type, newList);
             }
+            if (e instanceof ConstantExpression) {
+                Object obj = ((ConstantExpression) e).getValue();
+                if (obj instanceof Enum) {
+                    return propX(classX(obj.getClass()), e);
+                }
+            }
             return e;
         }