From 8c0081a806a3c772f29be5c038024a5a941c4be6 Mon Sep 17 00:00:00 2001 From: Rawi01 Date: Sun, 12 Mar 2023 09:05:24 +0100 Subject: [PATCH] [fixes #3364] Generate JCTree clones to prevent duplicate nodes --- .../lombok/javac/handlers/HandleBuilder.java | 5 +- .../javac/handlers/HandleConstructor.java | 2 +- .../handlers/HandleEqualsAndHashCode.java | 18 +++-- .../lombok/javac/handlers/HandleGetter.java | 12 ++-- src/core/lombok/javac/handlers/HandleLog.java | 9 ++- .../javac/handlers/HandleSuperBuilder.java | 4 +- .../javac/handlers/JavacHandlerUtil.java | 45 +------------ test/core/src/lombok/RunTestsViaDelombok.java | 67 +++++++++++++++++++ ...mName.java => SuperBuilderCustomName.java} | 20 +++--- ...mName.java => SuperBuilderCustomName.java} | 20 +++--- ...mName.java => SuperBuilderCustomName.java} | 2 +- .../NonNullPlain.java.messages | 4 +- 12 files changed, 125 insertions(+), 83 deletions(-) rename test/transform/resource/after-delombok/{BuilderCustomName.java => SuperBuilderCustomName.java} (51%) rename test/transform/resource/after-ecj/{BuilderCustomName.java => SuperBuilderCustomName.java} (52%) rename test/transform/resource/before/{BuilderCustomName.java => SuperBuilderCustomName.java} (80%) diff --git a/src/core/lombok/javac/handlers/HandleBuilder.java b/src/core/lombok/javac/handlers/HandleBuilder.java index ed7d2844..34b4f004 100644 --- a/src/core/lombok/javac/handlers/HandleBuilder.java +++ b/src/core/lombok/javac/handlers/HandleBuilder.java @@ -796,10 +796,11 @@ public class HandleBuilder extends JavacAnnotationHandler { List annsOnMethod = job.checkerFramework.generateSideEffectFree() ? List.of(maker.Annotation(genTypeRef(job.builderType, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE), List.nil())) : List.nil(); JCVariableDecl recv = generateReceiver(job); JCMethodDecl methodDef; + JCExpression returnTypeCopy = cloneType(maker, returnType, job.sourceNode); if (recv != null && maker.hasMethodDefWithRecvParam()) { - methodDef = maker.MethodDefWithRecvParam(maker.Modifiers(toJavacModifier(job.accessInners), annsOnMethod), job.toName(job.buildMethodName), returnType, List.nil(), recv, List.nil(), thrownExceptions, body, null); + methodDef = maker.MethodDefWithRecvParam(maker.Modifiers(toJavacModifier(job.accessInners), annsOnMethod), job.toName(job.buildMethodName), returnTypeCopy, List.nil(), recv, List.nil(), thrownExceptions, body, null); } else { - methodDef = maker.MethodDef(maker.Modifiers(toJavacModifier(job.accessInners), annsOnMethod), job.toName(job.buildMethodName), returnType, List.nil(), List.nil(), thrownExceptions, body, null); + methodDef = maker.MethodDef(maker.Modifiers(toJavacModifier(job.accessInners), annsOnMethod), job.toName(job.buildMethodName), returnTypeCopy, List.nil(), List.nil(), thrownExceptions, body, null); } if (staticName == null) createRelevantNonNullAnnotation(job.builderType, methodDef); return methodDef; diff --git a/src/core/lombok/javac/handlers/HandleConstructor.java b/src/core/lombok/javac/handlers/HandleConstructor.java index dc70e2ce..6a5dad1b 100644 --- a/src/core/lombok/javac/handlers/HandleConstructor.java +++ b/src/core/lombok/javac/handlers/HandleConstructor.java @@ -440,7 +440,7 @@ public class HandleConstructor { if (!type.typarams.isEmpty()) { for (JCTypeParameter param : type.typarams) { - typeParams.append(maker.TypeParameter(param.name, param.bounds)); + typeParams.append(maker.TypeParameter(param.name, cloneTypes(maker, param.bounds, source))); } } List annsOnReturnType = List.nil(); diff --git a/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java b/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java index dace3521..3b408145 100644 --- a/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java +++ b/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java @@ -191,7 +191,7 @@ public class HandleEqualsAndHashCode extends JavacAnnotationHandlernil(), List.nil(), List.nil(), body, null), source); } + private JCFieldAccess createHashCodeCacheFieldAccess(JavacNode typeNode, JavacTreeMaker maker) { + JCIdent receiver = maker.Ident(typeNode.toName("this")); + JCFieldAccess cacheHashCodeFieldAccess = maker.Select(receiver, typeNode.toName(HASH_CODE_CACHE_NAME)); + return cacheHashCodeFieldAccess; + } + public JCExpressionStatement createResultCalculation(JavacNode typeNode, JCExpression expr) { /* result = result * PRIME + expr; */ JavacTreeMaker maker = typeNode.getTreeMaker(); diff --git a/src/core/lombok/javac/handlers/HandleGetter.java b/src/core/lombok/javac/handlers/HandleGetter.java index 86eb9fda..3f7fbd20 100644 --- a/src/core/lombok/javac/handlers/HandleGetter.java +++ b/src/core/lombok/javac/handlers/HandleGetter.java @@ -222,7 +222,7 @@ public class HandleGetter extends JavacAnnotationHandler { JCVariableDecl fieldNode = (JCVariableDecl) field.get(); // Remember the type; lazy will change it - JCExpression methodType = cloneType(treeMaker, copyType(treeMaker, fieldNode), source); + JCExpression methodType = copyType(treeMaker, fieldNode, source); AnnotationValues accessors = JavacHandlerUtil.getAccessorsForField(field); // Generate the methodName; lazy will change the field type Name methodName = field.toName(toGetterName(field, accessors)); @@ -359,7 +359,7 @@ public class HandleGetter extends JavacAnnotationHandler { ListBuffer statements = new ListBuffer(); JCVariableDecl field = (JCVariableDecl) fieldNode.get(); - JCExpression copyOfRawFieldType = copyType(maker, field); + JCExpression copyOfRawFieldType = copyType(maker, field, source); JCExpression copyOfBoxedFieldType = null; field.type = null; boolean isPrimitive = false; @@ -371,7 +371,7 @@ public class HandleGetter extends JavacAnnotationHandler { copyOfBoxedFieldType = genJavaLangTypeRef(fieldNode, boxed); } } - if (copyOfBoxedFieldType == null) copyOfBoxedFieldType = copyType(maker, field); + if (copyOfBoxedFieldType == null) copyOfBoxedFieldType = copyType(maker, field, source); Name valueName = fieldNode.toName("value"); Name actualValueName = fieldNode.toName("actualValue"); @@ -446,7 +446,7 @@ public class HandleGetter extends JavacAnnotationHandler { /* private final java.util.concurrent.atomic.AtomicReference fieldName = new java.util.concurrent.atomic.AtomicReference(); */ { field.vartype = recursiveSetGeneratedBy( maker.TypeApply(chainDotsString(fieldNode, AR), List.of(genJavaLangTypeRef(fieldNode, "Object"))), source); - field.init = recursiveSetGeneratedBy(maker.NewClass(null, NIL_EXPRESSION, copyType(maker, field), NIL_EXPRESSION, null), source); + field.init = recursiveSetGeneratedBy(maker.NewClass(null, NIL_EXPRESSION, copyType(maker, field, source), NIL_EXPRESSION, null), source); } return statements.toList(); @@ -462,7 +462,7 @@ public class HandleGetter extends JavacAnnotationHandler { return maker.Exec(maker.Apply(NIL_EXPRESSION, maker.Select(receiver, source.toName("set")), List.of(value))); } - public JCExpression copyType(JavacTreeMaker treeMaker, JCVariableDecl fieldNode) { - return fieldNode.type != null ? treeMaker.Type(fieldNode.type) : fieldNode.vartype; + public JCExpression copyType(JavacTreeMaker treeMaker, JCVariableDecl fieldNode, JavacNode source) { + return fieldNode.type != null ? treeMaker.Type(fieldNode.type) : cloneType(treeMaker, fieldNode.vartype, source); } } diff --git a/src/core/lombok/javac/handlers/HandleLog.java b/src/core/lombok/javac/handlers/HandleLog.java index 957f5581..f5eefaa1 100644 --- a/src/core/lombok/javac/handlers/HandleLog.java +++ b/src/core/lombok/javac/handlers/HandleLog.java @@ -43,6 +43,7 @@ import com.sun.tools.javac.tree.JCTree.JCAnnotation; import com.sun.tools.javac.tree.JCTree.JCClassDecl; import com.sun.tools.javac.tree.JCTree.JCExpression; import com.sun.tools.javac.tree.JCTree.JCFieldAccess; +import com.sun.tools.javac.tree.JCTree.JCLiteral; import com.sun.tools.javac.tree.JCTree.JCMethodInvocation; import com.sun.tools.javac.tree.JCTree.JCVariableDecl; import com.sun.tools.javac.util.List; @@ -148,14 +149,18 @@ public class HandleLog { LogFactoryParameter parameter = parameters.get(i); switch (parameter) { case TYPE: - expressions[i] = loggingType; + expressions[i] = cloneType(maker, loggingType, typeNode); break; case NAME: JCExpression method = maker.Select(loggingType, typeNode.toName("getName")); expressions[i] = maker.Apply(List.nil(), method, List.nil()); break; case TOPIC: - expressions[i] = (JCExpression) loggerTopic.clone(); + if (loggerTopic instanceof JCLiteral) { + expressions[i] = maker.Literal(((JCLiteral) loggerTopic).value); + } else { + expressions[i] = cloneType(maker, loggerTopic, typeNode); + } break; case NULL: expressions[i] = maker.Literal(CTC_BOT, null); diff --git a/src/core/lombok/javac/handlers/HandleSuperBuilder.java b/src/core/lombok/javac/handlers/HandleSuperBuilder.java index 913f838c..1ebbccc8 100644 --- a/src/core/lombok/javac/handlers/HandleSuperBuilder.java +++ b/src/core/lombok/javac/handlers/HandleSuperBuilder.java @@ -260,7 +260,7 @@ public class HandleSuperBuilder extends JavacAnnotationHandler { Name superclassName = ((JCFieldAccess) extendsClause).getIdentifier(); String builderClassNameTemplate = BuilderJob.getBuilderClassNameTemplate(annotationNode, null); String superclassBuilderClassName = job.replaceBuilderClassName(superclassName.toString(), builderClassNameTemplate); - superclassBuilderClass = parent.getTreeMaker().Select((JCFieldAccess) extendsClause, parent.toName(superclassBuilderClassName)); + superclassBuilderClass = parent.getTreeMaker().Select(cloneType(maker, (JCFieldAccess) extendsClause, annotationNode), parent.toName(superclassBuilderClassName)); } else if (extendsClause != null) { String builderClassNameTemplate = BuilderJob.getBuilderClassNameTemplate(annotationNode, null); String superclassBuilderClassName = job.replaceBuilderClassName(extendsClause.toString(), builderClassNameTemplate); @@ -607,6 +607,7 @@ public class HandleSuperBuilder extends JavacAnnotationHandler { // Now add the . JCWildcard wildcard = maker.Wildcard(maker.TypeBoundKind(BoundKind.UNBOUND), null); typeParameterNames.append(wildcard); + wildcard = maker.Wildcard(maker.TypeBoundKind(BoundKind.UNBOUND), null); typeParameterNames.append(wildcard); // And return type annotations. List annsOnParamType = List.nil(); @@ -644,6 +645,7 @@ public class HandleSuperBuilder extends JavacAnnotationHandler { // Now add the . JCWildcard wildcard = maker.Wildcard(maker.TypeBoundKind(BoundKind.UNBOUND), null); typeParameterNames.append(wildcard); + wildcard = maker.Wildcard(maker.TypeBoundKind(BoundKind.UNBOUND), null); typeParameterNames.append(wildcard); JCTypeApply returnType = maker.TypeApply(namePlusTypeParamsToTypeReference(maker, job.parentType, job.toName(job.builderAbstractClassName), false, List.nil()), typeParameterNames.toList()); diff --git a/src/core/lombok/javac/handlers/JavacHandlerUtil.java b/src/core/lombok/javac/handlers/JavacHandlerUtil.java index ac947581..9c6e0f84 100644 --- a/src/core/lombok/javac/handlers/JavacHandlerUtil.java +++ b/src/core/lombok/javac/handlers/JavacHandlerUtil.java @@ -1695,29 +1695,8 @@ public class JavacHandlerUtil { * Searches the given field node for annotations and returns each one that is 'copyable' (either via configuration or from the base list). */ public static List findCopyableAnnotations(JavacNode node) { - JCAnnotation anno = null; - String annoName = null; - for (JavacNode child : node.down()) { - if (child.getKind() == Kind.ANNOTATION) { - if (anno != null) { - annoName = ""; - break; - } - JCAnnotation annotation = (JCAnnotation) child.get(); - annoName = annotation.annotationType.toString(); - anno = annotation; - } - } - - if (annoName == null) return List.nil(); - java.util.List configuredCopyable = node.getAst().readConfiguration(ConfigurationKeys.COPYABLE_ANNOTATIONS); - if (!annoName.isEmpty()) { - for (TypeName cn : configuredCopyable) if (cn != null && typeMatches(cn.toString(), node, annoName)) return List.of(anno); - for (String bn : BASE_COPYABLE_ANNOTATIONS) if (typeMatches(bn, node, annoName)) return List.of(anno); - } - ListBuffer result = new ListBuffer(); for (JavacNode child : node.down()) { if (child.getKind() == Kind.ANNOTATION) { @@ -1735,7 +1714,7 @@ public class JavacHandlerUtil { } } } - return result.toList(); + return copyAnnotations(result.toList()); } /** @@ -1756,26 +1735,6 @@ public class JavacHandlerUtil { * Searches the given field node for annotations that are in the given list, and returns those. */ private static List findAnnotationsInList(JavacNode node, java.util.List annotationsToFind) { - JCAnnotation anno = null; - String annoName = null; - for (JavacNode child : node.down()) { - if (child.getKind() == Kind.ANNOTATION) { - if (anno != null) { - annoName = ""; - break; - } - JCAnnotation annotation = (JCAnnotation) child.get(); - annoName = annotation.annotationType.toString(); - anno = annotation; - } - } - - if (annoName == null) return List.nil(); - - if (!annoName.isEmpty()) { - for (String bn : annotationsToFind) if (typeMatches(bn, node, annoName)) return List.of(anno); - } - ListBuffer result = new ListBuffer(); for (JavacNode child : node.down()) { if (child.getKind() == Kind.ANNOTATION) { @@ -1788,7 +1747,7 @@ public class JavacHandlerUtil { } } } - return result.toList(); + return copyAnnotations(result.toList()); } /** diff --git a/test/core/src/lombok/RunTestsViaDelombok.java b/test/core/src/lombok/RunTestsViaDelombok.java index e4eb1a30..adfb1fce 100644 --- a/test/core/src/lombok/RunTestsViaDelombok.java +++ b/test/core/src/lombok/RunTestsViaDelombok.java @@ -29,9 +29,12 @@ import java.io.PrintStream; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.util.ArrayDeque; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Deque; +import java.util.IdentityHashMap; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; @@ -56,6 +59,7 @@ import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; import com.sun.tools.javac.tree.JCTree.JCIdent; import com.sun.tools.javac.tree.JCTree.JCMethodDecl; import com.sun.tools.javac.tree.JCTree.JCModifiers; +import com.sun.tools.javac.tree.JCTree.JCPrimitiveTypeTree; import com.sun.tools.javac.tree.JCTree.JCVariableDecl; import com.sun.tools.javac.tree.JCTree.TypeBoundKind; import com.sun.tools.javac.tree.TreeScanner; @@ -81,6 +85,7 @@ public class RunTestsViaDelombok extends AbstractRunTests { if (checkPositions) delombok.addAdditionalAnnotationProcessor(new ValidatePositionProcessor(version)); delombok.addAdditionalAnnotationProcessor(new ValidateTypesProcessor()); + delombok.addAdditionalAnnotationProcessor(new ValidateNoDuplicateTreeNodeProcessor()); delombok.addFile(file.getAbsoluteFile().getParentFile(), file.getName()); delombok.setSourcepath(file.getAbsoluteFile().getParent()); @@ -232,6 +237,68 @@ public class RunTestsViaDelombok extends AbstractRunTests { } } + public static class ValidateNoDuplicateTreeNodeProcessor extends TreeProcessor { + + private String craftFailMsg(Collection astContext) { + StringBuilder msg = new StringBuilder(); + for (JCTree t : astContext) { + msg.append("\n ").append(t.getClass().getSimpleName()); + String asStr = t.toString(); + if (asStr.length() < 80) msg.append(": ").append(asStr); + else if (t instanceof JCClassDecl) msg.append(": ").append(((JCClassDecl) t).name); + else if (t instanceof JCMethodDecl) msg.append(": ").append(((JCMethodDecl) t).name); + else if (t instanceof JCVariableDecl) msg.append(": ").append(((JCVariableDecl) t).name); + } + return msg.append("\n-------").toString(); + } + + @Override + void processCompilationUnit(JCCompilationUnit unit) { + final Deque parents = new ArrayDeque(); + parents.add(unit); + + final Map> knownTreeNode = new IdentityHashMap>(); + + unit.accept(new TreeScanner() { + private JCTree parent; + + @Override + public void scan(JCTree tree) { + parent = parents.peek(); + + if (tree == null) return; + if (tree instanceof JCPrimitiveTypeTree) return; + // javac generates duplicates for record members + if (tree instanceof JCVariableDecl && (((JCVariableDecl) tree).mods.flags & Javac.GENERATED_MEMBER) != 0) return; + + List knownNodeContext = knownTreeNode.put(tree, new ArrayList(parents)); + if (knownNodeContext != null) { + // javac generates two JCVariableDecl elements for 'int a, b;' + if (parent instanceof JCVariableDecl) { + if (tree instanceof JCModifiers) return; + if (tree instanceof JCIdent) return; + } + + fail("Node " + tree + " found twice:" + craftFailMsg(knownNodeContext) + craftFailMsg(parents)); + } + + parents.push(tree); + super.scan(tree); + parents.pop(); + } + + /** + * We always generate shallow copies for annotations + */ + @Override + public void visitAnnotation(JCAnnotation tree) { + return; + } + }); + } + + } + public static abstract class TreeProcessor extends AbstractProcessor { private Trees trees; @Override public synchronized void init(ProcessingEnvironment processingEnv) { diff --git a/test/transform/resource/after-delombok/BuilderCustomName.java b/test/transform/resource/after-delombok/SuperBuilderCustomName.java similarity index 51% rename from test/transform/resource/after-delombok/BuilderCustomName.java rename to test/transform/resource/after-delombok/SuperBuilderCustomName.java index 900fbb03..cad2716c 100644 --- a/test/transform/resource/after-delombok/BuilderCustomName.java +++ b/test/transform/resource/after-delombok/SuperBuilderCustomName.java @@ -1,8 +1,8 @@ import java.util.List; -class BuilderCustomName { +class SuperBuilderCustomName { private final int field; @java.lang.SuppressWarnings("all") - public static abstract class SimpleTestBuilder, B extends BuilderCustomName.SimpleTestBuilder> { + public static abstract class SimpleTestBuilder, B extends SuperBuilderCustomName.SimpleTestBuilder> { @java.lang.SuppressWarnings("all") private int field; /** @@ -20,31 +20,31 @@ class BuilderCustomName { @java.lang.Override @java.lang.SuppressWarnings("all") public java.lang.String toString() { - return "BuilderCustomName.SimpleTestBuilder(field=" + this.field + ")"; + return "SuperBuilderCustomName.SimpleTestBuilder(field=" + this.field + ")"; } } @java.lang.SuppressWarnings("all") - private static final class SimpleTestBuilderImpl extends BuilderCustomName.SimpleTestBuilder, BuilderCustomName.SimpleTestBuilderImpl> { + private static final class SimpleTestBuilderImpl extends SuperBuilderCustomName.SimpleTestBuilder, SuperBuilderCustomName.SimpleTestBuilderImpl> { @java.lang.SuppressWarnings("all") private SimpleTestBuilderImpl() { } @java.lang.Override @java.lang.SuppressWarnings("all") - protected BuilderCustomName.SimpleTestBuilderImpl self() { + protected SuperBuilderCustomName.SimpleTestBuilderImpl self() { return this; } @java.lang.Override @java.lang.SuppressWarnings("all") - public BuilderCustomName build() { - return new BuilderCustomName(this); + public SuperBuilderCustomName build() { + return new SuperBuilderCustomName(this); } } @java.lang.SuppressWarnings("all") - protected BuilderCustomName(final BuilderCustomName.SimpleTestBuilder b) { + protected SuperBuilderCustomName(final SuperBuilderCustomName.SimpleTestBuilder b) { this.field = b.field; } @java.lang.SuppressWarnings("all") - public static BuilderCustomName.SimpleTestBuilder builder() { - return new BuilderCustomName.SimpleTestBuilderImpl(); + public static SuperBuilderCustomName.SimpleTestBuilder builder() { + return new SuperBuilderCustomName.SimpleTestBuilderImpl(); } } \ No newline at end of file diff --git a/test/transform/resource/after-ecj/BuilderCustomName.java b/test/transform/resource/after-ecj/SuperBuilderCustomName.java similarity index 52% rename from test/transform/resource/after-ecj/BuilderCustomName.java rename to test/transform/resource/after-ecj/SuperBuilderCustomName.java index cb578ccd..fc834090 100644 --- a/test/transform/resource/after-ecj/BuilderCustomName.java +++ b/test/transform/resource/after-ecj/SuperBuilderCustomName.java @@ -1,6 +1,6 @@ import java.util.List; -@lombok.experimental.SuperBuilder class BuilderCustomName { - public static abstract @java.lang.SuppressWarnings("all") class SimpleTestBuilder, B extends BuilderCustomName.SimpleTestBuilder> { +@lombok.experimental.SuperBuilder class SuperBuilderCustomName { + public static abstract @java.lang.SuppressWarnings("all") class SimpleTestBuilder, B extends SuperBuilderCustomName.SimpleTestBuilder> { private @java.lang.SuppressWarnings("all") int field; public SimpleTestBuilder() { super(); @@ -15,26 +15,26 @@ import java.util.List; protected abstract @java.lang.SuppressWarnings("all") B self(); public abstract @java.lang.SuppressWarnings("all") C build(); public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() { - return (("BuilderCustomName.SimpleTestBuilder(field=" + this.field) + ")"); + return (("SuperBuilderCustomName.SimpleTestBuilder(field=" + this.field) + ")"); } } - private static final @java.lang.SuppressWarnings("all") class SimpleTestBuilderImpl extends BuilderCustomName.SimpleTestBuilder, BuilderCustomName.SimpleTestBuilderImpl> { + private static final @java.lang.SuppressWarnings("all") class SimpleTestBuilderImpl extends SuperBuilderCustomName.SimpleTestBuilder, SuperBuilderCustomName.SimpleTestBuilderImpl> { private SimpleTestBuilderImpl() { super(); } - protected @java.lang.Override @java.lang.SuppressWarnings("all") BuilderCustomName.SimpleTestBuilderImpl self() { + protected @java.lang.Override @java.lang.SuppressWarnings("all") SuperBuilderCustomName.SimpleTestBuilderImpl self() { return this; } - public @java.lang.Override @java.lang.SuppressWarnings("all") BuilderCustomName build() { - return new BuilderCustomName(this); + public @java.lang.Override @java.lang.SuppressWarnings("all") SuperBuilderCustomName build() { + return new SuperBuilderCustomName(this); } } private final int field; - protected @java.lang.SuppressWarnings("all") BuilderCustomName(final BuilderCustomName.SimpleTestBuilder b) { + protected @java.lang.SuppressWarnings("all") SuperBuilderCustomName(final SuperBuilderCustomName.SimpleTestBuilder b) { super(); this.field = b.field; } - public static @java.lang.SuppressWarnings("all") BuilderCustomName.SimpleTestBuilder builder() { - return new BuilderCustomName.SimpleTestBuilderImpl(); + public static @java.lang.SuppressWarnings("all") SuperBuilderCustomName.SimpleTestBuilder builder() { + return new SuperBuilderCustomName.SimpleTestBuilderImpl(); } } diff --git a/test/transform/resource/before/BuilderCustomName.java b/test/transform/resource/before/SuperBuilderCustomName.java similarity index 80% rename from test/transform/resource/before/BuilderCustomName.java rename to test/transform/resource/before/SuperBuilderCustomName.java index d5709e63..7308e282 100644 --- a/test/transform/resource/before/BuilderCustomName.java +++ b/test/transform/resource/before/SuperBuilderCustomName.java @@ -2,6 +2,6 @@ import java.util.List; @lombok.experimental.SuperBuilder -class BuilderCustomName { +class SuperBuilderCustomName { private final int field; } diff --git a/test/transform/resource/messages-delombok/NonNullPlain.java.messages b/test/transform/resource/messages-delombok/NonNullPlain.java.messages index 7b0c540b..385efa23 100644 --- a/test/transform/resource/messages-delombok/NonNullPlain.java.messages +++ b/test/transform/resource/messages-delombok/NonNullPlain.java.messages @@ -1 +1,3 @@ -5 @NonNull is meaningless on a primitive. \ No newline at end of file +8 @NonNull is meaningless on a primitive. +4 @NonNull is meaningless on a primitive. +6 @NonNull is meaningless on a primitive. \ No newline at end of file