diff options
author | Jan Rieke <rieke@subshell.com> | 2022-06-17 23:30:25 +0200 |
---|---|---|
committer | Jan Rieke <rieke@subshell.com> | 2022-06-17 23:30:25 +0200 |
commit | 0fcb446265348753c2b448f98f2ad020d6d07d13 (patch) | |
tree | a2fd967105b02f61fbf36249fded352b39e91e17 | |
parent | ab36d2f8797ca34f3eefeb2008233985a856f0e4 (diff) | |
download | lombok-0fcb446265348753c2b448f98f2ad020d6d07d13.tar.gz lombok-0fcb446265348753c2b448f98f2ad020d6d07d13.tar.bz2 lombok-0fcb446265348753c2b448f98f2ad020d6d07d13.zip |
(SuperBuilder) fix javac type params on conflicting names
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> { } } |