diff --git a/pom.xml b/pom.xml index 15dfd3acb..a998697a2 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.mysema.codegen codegen - 0.5.2 + 0.5.3 Codegen Code generation and compilation for Java diff --git a/src/main/java/com/mysema/codegen/model/TypeSuper.java b/src/main/java/com/mysema/codegen/model/TypeSuper.java index bf1a61d1b..47ee0f046 100644 --- a/src/main/java/com/mysema/codegen/model/TypeSuper.java +++ b/src/main/java/com/mysema/codegen/model/TypeSuper.java @@ -41,7 +41,12 @@ public class TypeSuper extends TypeAdapter { @Override public String getGenericName(boolean asArgType, Set packages, Set classes) { if (!asArgType) { - return "? super " + superType.getGenericName(true, packages, classes); + if (superType instanceof TypeExtends) { + return "?"; + } else { + return "? super " + superType.getGenericName(true, packages, classes); + } + } else { return super.getGenericName(asArgType, packages, classes); } diff --git a/src/test/java/com/mysema/codegen/model/TypeSuperTest.java b/src/test/java/com/mysema/codegen/model/TypeSuperTest.java index d5c47caf9..5030a1221 100644 --- a/src/test/java/com/mysema/codegen/model/TypeSuperTest.java +++ b/src/test/java/com/mysema/codegen/model/TypeSuperTest.java @@ -20,5 +20,14 @@ public class TypeSuperTest { public void GetGenericName_As_ArgType() { assertEquals("java.lang.Object", new TypeSuper(Types.STRING).getGenericName(true)); } + + @Test + public void Comparable() { + // T extends Comparable + Type comparable = new ClassType(Comparable.class); + Type type = new TypeExtends("T", + new SimpleType(comparable, new TypeSuper(new TypeExtends("T", comparable)))); + assertEquals("? extends java.lang.Comparable", type.getGenericName(false)); + } }