aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/lombok/javac/handlers/HandleSuperBuilder.java3
-rw-r--r--test/transform/resource/after-delombok/SuperBuilderNameClashes.java10
-rw-r--r--test/transform/resource/after-ecj/SuperBuilderNameClashes.java10
-rw-r--r--test/transform/resource/before/SuperBuilderNameClashes.java7
4 files changed, 23 insertions, 7 deletions
diff --git a/src/core/lombok/javac/handlers/HandleSuperBuilder.java b/src/core/lombok/javac/handlers/HandleSuperBuilder.java
index 967141cd..3b66f076 100644
--- a/src/core/lombok/javac/handlers/HandleSuperBuilder.java
+++ b/src/core/lombok/javac/handlers/HandleSuperBuilder.java
@@ -1063,6 +1063,9 @@ public class HandleSuperBuilder extends JavacAnnotationHandler<SuperBuilder> {
private void addFirstToken(java.util.Set<String> usedNames, JCTree type) {
if (type == null)
return;
+ if (type instanceof JCTypeApply) {
+ type = ((JCTypeApply)type).clazz;
+ }
while (type instanceof JCFieldAccess && ((JCFieldAccess)type).selected != null) {
// Add the first token, because only that can collide.
type = ((JCFieldAccess)type).selected;
diff --git a/test/transform/resource/after-delombok/SuperBuilderNameClashes.java b/test/transform/resource/after-delombok/SuperBuilderNameClashes.java
index 2a2d0899..37372e41 100644
--- a/test/transform/resource/after-delombok/SuperBuilderNameClashes.java
+++ b/test/transform/resource/after-delombok/SuperBuilderNameClashes.java
@@ -125,13 +125,17 @@ public class SuperBuilderNameClashes {
}
}
interface B2 {
+ interface B4<X> {
+ }
+ }
+ interface B3<Y> {
}
- public static class ExtendsClauseCollision extends B implements B2 {
+ public static class ExtendsClauseCollision extends B implements B2.B4<Object>, B3<Object> {
@java.lang.SuppressWarnings("all")
- public static abstract class ExtendsClauseCollisionBuilder<C extends SuperBuilderNameClashes.ExtendsClauseCollision, B3 extends SuperBuilderNameClashes.ExtendsClauseCollision.ExtendsClauseCollisionBuilder<C, B3>> extends B.BBuilder<C, B3> {
+ public static abstract class ExtendsClauseCollisionBuilder<C extends SuperBuilderNameClashes.ExtendsClauseCollision, B4 extends SuperBuilderNameClashes.ExtendsClauseCollision.ExtendsClauseCollisionBuilder<C, B4>> extends B.BBuilder<C, B4> {
@java.lang.Override
@java.lang.SuppressWarnings("all")
- protected abstract B3 self();
+ protected abstract B4 self();
@java.lang.Override
@java.lang.SuppressWarnings("all")
public abstract C build();
diff --git a/test/transform/resource/after-ecj/SuperBuilderNameClashes.java b/test/transform/resource/after-ecj/SuperBuilderNameClashes.java
index 8ad62aa2..6d1b82e2 100644
--- a/test/transform/resource/after-ecj/SuperBuilderNameClashes.java
+++ b/test/transform/resource/after-ecj/SuperBuilderNameClashes.java
@@ -102,13 +102,17 @@ public class SuperBuilderNameClashes {
}
}
interface B2 {
+ interface B4<X> {
+ }
+ }
+ interface B3<Y> {
}
- public static @lombok.experimental.SuperBuilder class ExtendsClauseCollision extends B implements B2 {
- public static abstract @java.lang.SuppressWarnings("all") class ExtendsClauseCollisionBuilder<C extends SuperBuilderNameClashes.ExtendsClauseCollision, B3 extends SuperBuilderNameClashes.ExtendsClauseCollision.ExtendsClauseCollisionBuilder<C, B3>> extends B.BBuilder<C, B3> {
+ public static @lombok.experimental.SuperBuilder class ExtendsClauseCollision extends B implements B2.B4<Object>, B3<Object> {
+ public static abstract @java.lang.SuppressWarnings("all") class ExtendsClauseCollisionBuilder<C extends SuperBuilderNameClashes.ExtendsClauseCollision, B4 extends SuperBuilderNameClashes.ExtendsClauseCollision.ExtendsClauseCollisionBuilder<C, B4>> extends B.BBuilder<C, B4> {
public ExtendsClauseCollisionBuilder() {
super();
}
- protected abstract @java.lang.Override @java.lang.SuppressWarnings("all") B3 self();
+ protected abstract @java.lang.Override @java.lang.SuppressWarnings("all") B4 self();
public abstract @java.lang.Override @java.lang.SuppressWarnings("all") C build();
public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
return (("SuperBuilderNameClashes.ExtendsClauseCollision.ExtendsClauseCollisionBuilder(super=" + super.toString()) + ")");
diff --git a/test/transform/resource/before/SuperBuilderNameClashes.java b/test/transform/resource/before/SuperBuilderNameClashes.java
index a8e719bf..ec3afbb8 100644
--- a/test/transform/resource/before/SuperBuilderNameClashes.java
+++ b/test/transform/resource/before/SuperBuilderNameClashes.java
@@ -16,9 +16,14 @@ public class SuperBuilderNameClashes {
}
interface B2 {
+ interface B4<X> {
+ }
+ }
+
+ interface B3<Y> {
}
@lombok.experimental.SuperBuilder
- public static class ExtendsClauseCollision extends B implements B2 {
+ public static class ExtendsClauseCollision extends B implements B2.B4<Object>, B3<Object> {
}
}