From 72f546f9cb424932024e91b2c4431aea51909c42 Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Fri, 14 Feb 2020 01:21:17 +0100 Subject: [trivial] improving consistency between javac vs. ecj output wasn't worth an issue on the tracker: javac and ecj handlers for static constructors would differ; ecjs would specify the return type and constructor invocation using fully qualified types, whereas the handler for javac did not. --- src/core/lombok/javac/handlers/HandleConstructor.java | 11 ++--------- .../transform/resource/after-delombok/ConstructorInner.java | 11 +++++++++++ test/transform/resource/after-ecj/ConstructorInner.java | 13 +++++++++++++ test/transform/resource/before/ConstructorInner.java | 5 +++++ 4 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 test/transform/resource/after-delombok/ConstructorInner.java create mode 100644 test/transform/resource/after-ecj/ConstructorInner.java create mode 100644 test/transform/resource/before/ConstructorInner.java diff --git a/src/core/lombok/javac/handlers/HandleConstructor.java b/src/core/lombok/javac/handlers/HandleConstructor.java index d022995a..e0abb53b 100644 --- a/src/core/lombok/javac/handlers/HandleConstructor.java +++ b/src/core/lombok/javac/handlers/HandleConstructor.java @@ -459,22 +459,15 @@ public class HandleConstructor { ListBuffer typeParams = new ListBuffer(); ListBuffer params = new ListBuffer(); - ListBuffer typeArgs1 = new ListBuffer(); - ListBuffer typeArgs2 = new ListBuffer(); ListBuffer args = new ListBuffer(); if (!type.typarams.isEmpty()) { for (JCTypeParameter param : type.typarams) { - typeArgs1.append(maker.Ident(param.name)); - typeArgs2.append(maker.Ident(param.name)); typeParams.append(maker.TypeParameter(param.name, param.bounds)); } - returnType = maker.TypeApply(maker.Ident(type.name), typeArgs1.toList()); - constructorType = maker.TypeApply(maker.Ident(type.name), typeArgs2.toList()); - } else { - returnType = maker.Ident(type.name); - constructorType = maker.Ident(type.name); } + returnType = namePlusTypeParamsToTypeReference(maker, typeNode, type.typarams); + constructorType = namePlusTypeParamsToTypeReference(maker, typeNode, type.typarams); for (JavacNode fieldNode : fields) { JCVariableDecl field = (JCVariableDecl) fieldNode.get(); diff --git a/test/transform/resource/after-delombok/ConstructorInner.java b/test/transform/resource/after-delombok/ConstructorInner.java new file mode 100644 index 00000000..fb0852dc --- /dev/null +++ b/test/transform/resource/after-delombok/ConstructorInner.java @@ -0,0 +1,11 @@ +class ConstructorInner { + static class Inner { + @java.lang.SuppressWarnings("all") + private Inner() { + } + @java.lang.SuppressWarnings("all") + public static ConstructorInner.Inner of() { + return new ConstructorInner.Inner(); + } + } +} \ No newline at end of file diff --git a/test/transform/resource/after-ecj/ConstructorInner.java b/test/transform/resource/after-ecj/ConstructorInner.java new file mode 100644 index 00000000..be8ea17e --- /dev/null +++ b/test/transform/resource/after-ecj/ConstructorInner.java @@ -0,0 +1,13 @@ +class ConstructorInner { + static @lombok.AllArgsConstructor(staticName = "of") class Inner { + private @java.lang.SuppressWarnings("all") Inner() { + super(); + } + public static @java.lang.SuppressWarnings("all") ConstructorInner.Inner of() { + return new ConstructorInner.Inner(); + } + } + ConstructorInner() { + super(); + } +} \ No newline at end of file diff --git a/test/transform/resource/before/ConstructorInner.java b/test/transform/resource/before/ConstructorInner.java new file mode 100644 index 00000000..dd74d43a --- /dev/null +++ b/test/transform/resource/before/ConstructorInner.java @@ -0,0 +1,5 @@ +class ConstructorInner { + @lombok.AllArgsConstructor(staticName = "of") + static class Inner { + } +} \ No newline at end of file -- cgit