From 0a1afc875423eebc443347eb002ac87ec0016e4d Mon Sep 17 00:00:00 2001 From: JohnPaulTaylorII Date: Mon, 14 Mar 2022 16:03:37 -0400 Subject: [PATCH] [fixes #3133] Additional bits setting when creating type annotations --- .../eclipse/handlers/EclipseHandlerUtil.java | 18 +++++++++++------- .../handlers/EclipseSingularsRecipes.java | 7 ++++--- .../handlers/HandleEqualsAndHashCode.java | 10 +++++++--- .../lombok/eclipse/handlers/HandleWithBy.java | 2 +- .../singulars/EclipseGuavaSingularizer.java | 2 +- .../EclipseJavaUtilListSetSingularizer.java | 2 +- .../EclipseJavaUtilMapSingularizer.java | 2 +- 7 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java index c313cf5139..cda31e2c64 100644 --- a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java +++ b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java @@ -2601,25 +2601,25 @@ public static void createRelevantNonNullAnnotation(EclipseNode typeNode, MethodD applyAnnotationToMethodDecl(typeNode, mth, lib.getNonNullAnnotation(), lib.isTypeUse()); } - public static void createRelevantNullableAnnotation(EclipseNode typeNode, Argument arg) { + public static void createRelevantNullableAnnotation(EclipseNode typeNode, Argument arg, MethodDeclaration mth) { NullAnnotationLibrary lib = typeNode.getAst().readConfiguration(ConfigurationKeys.ADD_NULL_ANNOTATIONS); if (lib == null) return; - applyAnnotationToVarDecl(typeNode, arg, lib.getNullableAnnotation(), lib.isTypeUse()); + applyAnnotationToVarDecl(typeNode, arg, mth, lib.getNullableAnnotation(), lib.isTypeUse()); } - public static void createRelevantNullableAnnotation(EclipseNode typeNode, Argument arg, List applied) { + public static void createRelevantNullableAnnotation(EclipseNode typeNode, Argument arg, MethodDeclaration mth, List applied) { NullAnnotationLibrary lib = typeNode.getAst().readConfiguration(ConfigurationKeys.ADD_NULL_ANNOTATIONS); if (lib == null || applied.contains(lib)) return; - applyAnnotationToVarDecl(typeNode, arg, lib.getNullableAnnotation(), lib.isTypeUse()); + applyAnnotationToVarDecl(typeNode, arg, mth, lib.getNullableAnnotation(), lib.isTypeUse()); } - public static void createRelevantNonNullAnnotation(EclipseNode typeNode, Argument arg) { + public static void createRelevantNonNullAnnotation(EclipseNode typeNode, Argument arg, MethodDeclaration mth) { NullAnnotationLibrary lib = typeNode.getAst().readConfiguration(ConfigurationKeys.ADD_NULL_ANNOTATIONS); if (lib == null) return; - applyAnnotationToVarDecl(typeNode, arg, lib.getNonNullAnnotation(), lib.isTypeUse()); + applyAnnotationToVarDecl(typeNode, arg, mth, lib.getNonNullAnnotation(), lib.isTypeUse()); } private static void applyAnnotationToMethodDecl(EclipseNode typeNode, MethodDeclaration mth, String annType, boolean typeUse) { @@ -2653,9 +2653,10 @@ private static void applyAnnotationToMethodDecl(EclipseNode typeNode, MethodDecl } a[0] = ann; mth.returnType.annotations[len - 1] = a; + mth.bits |= Eclipse.HasTypeAnnotations; } } - private static void applyAnnotationToVarDecl(EclipseNode typeNode, Argument arg, String annType, boolean typeUse) { + private static void applyAnnotationToVarDecl(EclipseNode typeNode, Argument arg, MethodDeclaration mth, String annType, boolean typeUse) { if (annType == null) return; int partCount = 1; @@ -2686,6 +2687,9 @@ private static void applyAnnotationToVarDecl(EclipseNode typeNode, Argument arg, } a[0] = ann; arg.type.annotations[len - 1] = a; + arg.type.bits |= Eclipse.HasTypeAnnotations; + arg.bits |= Eclipse.HasTypeAnnotations; + mth.bits |= Eclipse.HasTypeAnnotations; } } diff --git a/src/core/lombok/eclipse/handlers/EclipseSingularsRecipes.java b/src/core/lombok/eclipse/handlers/EclipseSingularsRecipes.java index 998c1274e1..54f1a55135 100755 --- a/src/core/lombok/eclipse/handlers/EclipseSingularsRecipes.java +++ b/src/core/lombok/eclipse/handlers/EclipseSingularsRecipes.java @@ -44,6 +44,7 @@ import org.eclipse.jdt.internal.compiler.ast.IfStatement; import org.eclipse.jdt.internal.compiler.ast.IntLiteral; import org.eclipse.jdt.internal.compiler.ast.MessageSend; +import org.eclipse.jdt.internal.compiler.ast.MethodDeclaration; import org.eclipse.jdt.internal.compiler.ast.NullLiteral; import org.eclipse.jdt.internal.compiler.ast.OperatorIds; import org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference; @@ -430,7 +431,7 @@ protected static Reference getBuilderReference(String builderVariable) { } } - protected void nullBehaviorize(EclipseNode typeNode, SingularData data, List statements, Argument arg) { + protected void nullBehaviorize(EclipseNode typeNode, SingularData data, List statements, Argument arg, MethodDeclaration md) { boolean ignoreNullCollections = data.isIgnoreNullCollections(); if (ignoreNullCollections) { @@ -439,11 +440,11 @@ protected void nullBehaviorize(EclipseNode typeNode, SingularData data, List statements = new ArrayList(); @@ -898,7 +902,7 @@ public MethodDeclaration createCanEqual(EclipseNode type, ASTNode source, List