aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReinier Zwitserloot <reinier@zwitserloot.com>2018-08-28 00:37:38 +0200
committerReinier Zwitserloot <reinier@zwitserloot.com>2018-08-28 00:37:54 +0200
commitef90e2ec2dcea35a22959f2c1295517edf090133 (patch)
tree32e8c25055b86ce36d80e5abee150ef862d13e99
parent572222c54bc379ac322d906c39499e8dd02a4d59 (diff)
downloadlombok-ef90e2ec2dcea35a22959f2c1295517edf090133.tar.gz
lombok-ef90e2ec2dcea35a22959f2c1295517edf090133.tar.bz2
lombok-ef90e2ec2dcea35a22959f2c1295517edf090133.zip
[fixes #1836] superbuilder didn’t play ball with field prefixes, at least in javac.
-rw-r--r--src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java1
-rw-r--r--src/core/lombok/eclipse/handlers/HandleSuperBuilder.java2
-rw-r--r--src/core/lombok/javac/handlers/HandleSuperBuilder.java2
-rw-r--r--test/transform/resource/after-delombok/SuperBuilderWithCustomBuilderMethod.java4
-rw-r--r--test/transform/resource/after-delombok/SuperBuilderWithDefaults.java2
-rw-r--r--test/transform/resource/after-delombok/SuperBuilderWithPrefixes.java87
-rw-r--r--test/transform/resource/after-ecj/SuperBuilderWithCustomBuilderMethod.java4
-rw-r--r--test/transform/resource/after-ecj/SuperBuilderWithDefaults.java2
-rw-r--r--test/transform/resource/after-ecj/SuperBuilderWithPrefixes.java74
-rw-r--r--test/transform/resource/before/SuperBuilderWithPrefixes.java8
10 files changed, 176 insertions, 10 deletions
diff --git a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
index 87df6d1b..f89ef061 100644
--- a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
+++ b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
@@ -24,7 +24,6 @@ package lombok.eclipse.handlers;
import static lombok.core.handlers.HandlerUtil.*;
import static lombok.eclipse.Eclipse.*;
import static lombok.eclipse.EclipseAugments.*;
-import static lombok.eclipse.handlers.EclipseHandlerUtil.setGeneratedBy;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
diff --git a/src/core/lombok/eclipse/handlers/HandleSuperBuilder.java b/src/core/lombok/eclipse/handlers/HandleSuperBuilder.java
index 413bdd5d..3c07ac55 100644
--- a/src/core/lombok/eclipse/handlers/HandleSuperBuilder.java
+++ b/src/core/lombok/eclipse/handlers/HandleSuperBuilder.java
@@ -48,7 +48,6 @@ import org.eclipse.jdt.internal.compiler.ast.FieldReference;
import org.eclipse.jdt.internal.compiler.ast.IfStatement;
import org.eclipse.jdt.internal.compiler.ast.MessageSend;
import org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
-import org.eclipse.jdt.internal.compiler.ast.OperatorIds;
import org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
import org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference;
import org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;
@@ -61,7 +60,6 @@ import org.eclipse.jdt.internal.compiler.ast.ThisReference;
import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
import org.eclipse.jdt.internal.compiler.ast.TypeParameter;
import org.eclipse.jdt.internal.compiler.ast.TypeReference;
-import org.eclipse.jdt.internal.compiler.ast.UnaryExpression;
import org.eclipse.jdt.internal.compiler.ast.Wildcard;
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
import org.eclipse.jdt.internal.compiler.lookup.ClassScope;
diff --git a/src/core/lombok/javac/handlers/HandleSuperBuilder.java b/src/core/lombok/javac/handlers/HandleSuperBuilder.java
index 18e74908..b8f572d5 100644
--- a/src/core/lombok/javac/handlers/HandleSuperBuilder.java
+++ b/src/core/lombok/javac/handlers/HandleSuperBuilder.java
@@ -415,7 +415,7 @@ public class HandleSuperBuilder extends JavacAnnotationHandler<SuperBuilder> {
bfd.singularData.getSingularizer().appendBuildCode(bfd.singularData, bfd.originalFieldNode, bfd.type, statements, bfd.name, "b");
rhs = maker.Ident(bfd.singularData.getPluralName());
} else {
- rhs = maker.Select(maker.Ident(builderVariableName), bfd.rawName);
+ rhs = maker.Select(maker.Ident(builderVariableName), bfd.name);
}
JCFieldAccess fieldInThis = maker.Select(maker.Ident(typeNode.toName("this")), bfd.rawName);
diff --git a/test/transform/resource/after-delombok/SuperBuilderWithCustomBuilderMethod.java b/test/transform/resource/after-delombok/SuperBuilderWithCustomBuilderMethod.java
index 21a9db07..fc303583 100644
--- a/test/transform/resource/after-delombok/SuperBuilderWithCustomBuilderMethod.java
+++ b/test/transform/resource/after-delombok/SuperBuilderWithCustomBuilderMethod.java
@@ -48,7 +48,7 @@ public class SuperBuilderWithCustomBuilderMethod {
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
- protected ParentBuilderImpl self() {
+ protected ParentBuilderImpl<A> self() {
return this;
}
@java.lang.Override
@@ -111,7 +111,7 @@ public class SuperBuilderWithCustomBuilderMethod {
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
- protected ChildBuilderImpl self() {
+ protected ChildBuilderImpl<A> self() {
return this;
}
@java.lang.Override
diff --git a/test/transform/resource/after-delombok/SuperBuilderWithDefaults.java b/test/transform/resource/after-delombok/SuperBuilderWithDefaults.java
index 17707bf5..842b7e55 100644
--- a/test/transform/resource/after-delombok/SuperBuilderWithDefaults.java
+++ b/test/transform/resource/after-delombok/SuperBuilderWithDefaults.java
@@ -50,7 +50,7 @@ public class SuperBuilderWithDefaults {
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
- protected ParentBuilderImpl self() {
+ protected ParentBuilderImpl<N> self() {
return this;
}
@java.lang.Override
diff --git a/test/transform/resource/after-delombok/SuperBuilderWithPrefixes.java b/test/transform/resource/after-delombok/SuperBuilderWithPrefixes.java
new file mode 100644
index 00000000..2fb2dcca
--- /dev/null
+++ b/test/transform/resource/after-delombok/SuperBuilderWithPrefixes.java
@@ -0,0 +1,87 @@
+class SuperBuilderWithPrefixes {
+ int mField;
+ int xOtherField;
+ java.util.List<String> mItems;
+ @java.lang.SuppressWarnings("all")
+ public static abstract class SuperBuilderWithPrefixesBuilder<C extends SuperBuilderWithPrefixes, B extends SuperBuilderWithPrefixesBuilder<C, B>> {
+ @java.lang.SuppressWarnings("all")
+ private int field;
+ @java.lang.SuppressWarnings("all")
+ private int otherField;
+ @java.lang.SuppressWarnings("all")
+ private java.util.ArrayList<String> items;
+ @java.lang.SuppressWarnings("all")
+ protected abstract B self();
+ @java.lang.SuppressWarnings("all")
+ public abstract C build();
+ @java.lang.SuppressWarnings("all")
+ public B field(final int field) {
+ this.field = field;
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B otherField(final int otherField) {
+ this.otherField = otherField;
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B item(final String item) {
+ if (this.items == null) this.items = new java.util.ArrayList<String>();
+ this.items.add(item);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B items(final java.util.Collection<? extends String> items) {
+ if (this.items == null) this.items = new java.util.ArrayList<String>();
+ this.items.addAll(items);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B clearItems() {
+ if (this.items != null) this.items.clear();
+ return self();
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public java.lang.String toString() {
+ return "SuperBuilderWithPrefixes.SuperBuilderWithPrefixesBuilder(field=" + this.field + ", otherField=" + this.otherField + ", items=" + this.items + ")";
+ }
+ }
+ @java.lang.SuppressWarnings("all")
+ private static final class SuperBuilderWithPrefixesBuilderImpl extends SuperBuilderWithPrefixesBuilder<SuperBuilderWithPrefixes, SuperBuilderWithPrefixesBuilderImpl> {
+ @java.lang.SuppressWarnings("all")
+ private SuperBuilderWithPrefixesBuilderImpl() {
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ protected SuperBuilderWithPrefixesBuilderImpl self() {
+ return this;
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public SuperBuilderWithPrefixes build() {
+ return new SuperBuilderWithPrefixes(this);
+ }
+ }
+ @java.lang.SuppressWarnings("all")
+ protected SuperBuilderWithPrefixes(final SuperBuilderWithPrefixesBuilder<?, ?> b) {
+ this.mField = b.field;
+ this.xOtherField = b.otherField;
+ java.util.List<String> items;
+ switch (b.items == null ? 0 : b.items.size()) {
+ case 0:
+ items = java.util.Collections.emptyList();
+ break;
+ case 1:
+ items = java.util.Collections.singletonList(b.items.get(0));
+ break;
+ default:
+ items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
+ }
+ this.mItems = items;
+ }
+ @java.lang.SuppressWarnings("all")
+ public static SuperBuilderWithPrefixesBuilder<?, ?> builder() {
+ return new SuperBuilderWithPrefixesBuilderImpl();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/SuperBuilderWithCustomBuilderMethod.java b/test/transform/resource/after-ecj/SuperBuilderWithCustomBuilderMethod.java
index fe4938bf..ed0655c7 100644
--- a/test/transform/resource/after-ecj/SuperBuilderWithCustomBuilderMethod.java
+++ b/test/transform/resource/after-ecj/SuperBuilderWithCustomBuilderMethod.java
@@ -38,7 +38,7 @@ public class SuperBuilderWithCustomBuilderMethod {
private ParentBuilderImpl() {
super();
}
- protected @java.lang.Override @java.lang.SuppressWarnings("all") ParentBuilderImpl self() {
+ protected @java.lang.Override @java.lang.SuppressWarnings("all") ParentBuilderImpl<A> self() {
return this;
}
public @java.lang.Override @java.lang.SuppressWarnings("all") Parent<A> build() {
@@ -87,7 +87,7 @@ public class SuperBuilderWithCustomBuilderMethod {
private ChildBuilderImpl() {
super();
}
- protected @java.lang.Override @java.lang.SuppressWarnings("all") ChildBuilderImpl self() {
+ protected @java.lang.Override @java.lang.SuppressWarnings("all") ChildBuilderImpl<A> self() {
return this;
}
public @java.lang.Override @java.lang.SuppressWarnings("all") Child<A> build() {
diff --git a/test/transform/resource/after-ecj/SuperBuilderWithDefaults.java b/test/transform/resource/after-ecj/SuperBuilderWithDefaults.java
index ef0713c5..e259b68d 100644
--- a/test/transform/resource/after-ecj/SuperBuilderWithDefaults.java
+++ b/test/transform/resource/after-ecj/SuperBuilderWithDefaults.java
@@ -29,7 +29,7 @@ public class SuperBuilderWithDefaults {
private ParentBuilderImpl() {
super();
}
- protected @java.lang.Override @java.lang.SuppressWarnings("all") ParentBuilderImpl self() {
+ protected @java.lang.Override @java.lang.SuppressWarnings("all") ParentBuilderImpl<N> self() {
return this;
}
public @java.lang.Override @java.lang.SuppressWarnings("all") Parent<N> build() {
diff --git a/test/transform/resource/after-ecj/SuperBuilderWithPrefixes.java b/test/transform/resource/after-ecj/SuperBuilderWithPrefixes.java
new file mode 100644
index 00000000..33400b3c
--- /dev/null
+++ b/test/transform/resource/after-ecj/SuperBuilderWithPrefixes.java
@@ -0,0 +1,74 @@
+@lombok.experimental.SuperBuilder class SuperBuilderWithPrefixes {
+ public static abstract @java.lang.SuppressWarnings("all") class SuperBuilderWithPrefixesBuilder<C extends SuperBuilderWithPrefixes, B extends SuperBuilderWithPrefixesBuilder<C, B>> {
+ private @java.lang.SuppressWarnings("all") int field;
+ private @java.lang.SuppressWarnings("all") int otherField;
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<String> items;
+ public SuperBuilderWithPrefixesBuilder() {
+ super();
+ }
+ protected abstract @java.lang.SuppressWarnings("all") B self();
+ public abstract @java.lang.SuppressWarnings("all") C build();
+ public @java.lang.SuppressWarnings("all") B field(final int field) {
+ this.field = field;
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B otherField(final int otherField) {
+ this.otherField = otherField;
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B item(String item) {
+ if ((this.items == null))
+ this.items = new java.util.ArrayList<String>();
+ this.items.add(item);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B items(java.util.Collection<? extends String> items) {
+ if ((this.items == null))
+ this.items = new java.util.ArrayList<String>();
+ this.items.addAll(items);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B clearItems() {
+ if ((this.items != null))
+ this.items.clear();
+ return self();
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
+ return (((((("SuperBuilderWithPrefixes.SuperBuilderWithPrefixesBuilder(field=" + this.field) + ", otherField=") + this.otherField) + ", items=") + this.items) + ")");
+ }
+ }
+ private static final @java.lang.SuppressWarnings("all") class SuperBuilderWithPrefixesBuilderImpl extends SuperBuilderWithPrefixesBuilder<SuperBuilderWithPrefixes, SuperBuilderWithPrefixesBuilderImpl> {
+ private SuperBuilderWithPrefixesBuilderImpl() {
+ super();
+ }
+ protected @java.lang.Override @java.lang.SuppressWarnings("all") SuperBuilderWithPrefixesBuilderImpl self() {
+ return this;
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") SuperBuilderWithPrefixes build() {
+ return new SuperBuilderWithPrefixes(this);
+ }
+ }
+ int mField;
+ int xOtherField;
+ @lombok.Singular java.util.List<String> mItems;
+ protected @java.lang.SuppressWarnings("all") SuperBuilderWithPrefixes(final SuperBuilderWithPrefixesBuilder<?, ?> b) {
+ super();
+ this.mField = b.field;
+ this.xOtherField = b.otherField;
+ java.util.List<String> items;
+ switch (((b.items == null) ? 0 : b.items.size())) {
+ case 0 :
+ items = java.util.Collections.emptyList();
+ break;
+ case 1 :
+ items = java.util.Collections.singletonList(b.items.get(0));
+ break;
+ default :
+ items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
+ }
+ this.mItems = items;
+ }
+ public static @java.lang.SuppressWarnings("all") SuperBuilderWithPrefixesBuilder<?, ?> builder() {
+ return new SuperBuilderWithPrefixesBuilderImpl();
+ }
+}
diff --git a/test/transform/resource/before/SuperBuilderWithPrefixes.java b/test/transform/resource/before/SuperBuilderWithPrefixes.java
new file mode 100644
index 00000000..b15c9607
--- /dev/null
+++ b/test/transform/resource/before/SuperBuilderWithPrefixes.java
@@ -0,0 +1,8 @@
+//CONF: lombok.accessors.prefix += m
+//CONF: lombok.accessors.prefix += x
+@lombok.experimental.SuperBuilder
+class SuperBuilderWithPrefixes {
+ int mField;
+ int xOtherField;
+ @lombok.Singular java.util.List<String> mItems;
+}