aboutsummaryrefslogtreecommitdiff
path: root/src/core/lombok/javac
diff options
context:
space:
mode:
authorReinier Zwitserloot <r.zwitserloot@projectlombok.org>2023-01-12 02:04:20 +0100
committerGitHub <noreply@github.com>2023-01-12 02:04:20 +0100
commit9e6f66c557205bff3c87eefb4c7a7631d0b89ff0 (patch)
treecaa14a97db0852d16444575892db6d0761cc18de /src/core/lombok/javac
parent8bb4dc5daa8792e718e88c596812f232a2b73e6e (diff)
parentf13b4dbbfccfe5a6bb72906c84c2e640e05d7788 (diff)
downloadlombok-9e6f66c557205bff3c87eefb4c7a7631d0b89ff0.tar.gz
lombok-9e6f66c557205bff3c87eefb4c7a7631d0b89ff0.tar.bz2
lombok-9e6f66c557205bff3c87eefb4c7a7631d0b89ff0.zip
Merge pull request #3325 from Rawi01/builder-default-array
Convert short array initializers to long version
Diffstat (limited to 'src/core/lombok/javac')
-rw-r--r--src/core/lombok/javac/handlers/HandleBuilder.java9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/core/lombok/javac/handlers/HandleBuilder.java b/src/core/lombok/javac/handlers/HandleBuilder.java
index 854c8524..ed7d2844 100644
--- a/src/core/lombok/javac/handlers/HandleBuilder.java
+++ b/src/core/lombok/javac/handlers/HandleBuilder.java
@@ -45,6 +45,7 @@ import com.sun.tools.javac.tree.JCTree.JCLiteral;
import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
import com.sun.tools.javac.tree.JCTree.JCMethodInvocation;
import com.sun.tools.javac.tree.JCTree.JCModifiers;
+import com.sun.tools.javac.tree.JCTree.JCNewArray;
import com.sun.tools.javac.tree.JCTree.JCNewClass;
import com.sun.tools.javac.tree.JCTree.JCPrimitiveTypeTree;
import com.sun.tools.javac.tree.JCTree.JCReturn;
@@ -817,6 +818,14 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> {
JCBlock body = maker.Block(0, List.<JCStatement>of(statement));
int modifiers = Flags.PRIVATE | Flags.STATIC;
JCMethodDecl defaultProvider = maker.MethodDef(maker.Modifiers(modifiers), methodName, cloneType(maker, field.vartype, fieldNode), copyTypeParams(fieldNode, params), List.<JCVariableDecl>nil(), List.<JCExpression>nil(), body, null);
+ // ... then we convert short array initializers from `{1,2}` to `new int[]{1,2}` ...
+ if (init instanceof JCNewArray && field.vartype instanceof JCArrayTypeTree) {
+ JCNewArray arrayInitializer = (JCNewArray) init;
+ JCArrayTypeTree fieldType = (JCArrayTypeTree) field.vartype;
+ if (arrayInitializer.elemtype == null) {
+ arrayInitializer.elemtype = cloneType(maker, fieldType.elemtype, fieldNode);
+ }
+ }
// ... then we set positions for everything else ...
recursiveSetGeneratedBy(defaultProvider, job.sourceNode);
// ... and finally add back the original expression