fix for GROOVY-2800. Ensures the stub compiler will not generate a generics signature if the user did not create one
git-svn-id: http://svn.codehaus.org/groovy/trunk/groovy/groovy-core@12207 a5544e8c-8a19-0410-ba12-f9af4593a198
diff --git a/src/main/org/codehaus/groovy/ast/ClassHelper.java b/src/main/org/codehaus/groovy/ast/ClassHelper.java
index cda9f03..7a48105 100644
--- a/src/main/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/org/codehaus/groovy/ast/ClassHelper.java
@@ -307,4 +307,11 @@
public static ClassNode makeReference() {
return make(Reference.class);
}
+
+ public static boolean isCachedType(ClassNode type) {
+ for (int i=0;i<types.length; i++) {
+ if (types[i] == type) return true;
+ }
+ return false;
+ }
}
diff --git a/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java b/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
index 7b855dc..bc7c9dc 100644
--- a/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
+++ b/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
@@ -506,7 +506,12 @@
private void writeGenericsBounds(PrintWriter out, ClassNode type, boolean skipName) {
if (!skipName) printTypeName(type,out);
- if (java5 && !type.isGenericsPlaceHolder()) writeGenericsBounds(out,type.getGenericsTypes());
+ if (java5 &&
+ !type.isGenericsPlaceHolder() &&
+ !ClassHelper.isCachedType(type)
+ ) {
+ writeGenericsBounds(out,type.getGenericsTypes());
+ }
}
private void writeGenericsBounds(PrintWriter out, GenericsType[] genericsTypes) {