aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/lombok/core/LombokNode.java10
-rw-r--r--src/core/lombok/eclipse/EclipseNode.java10
-rw-r--r--src/core/lombok/eclipse/handlers/HandleWithBy.java7
-rw-r--r--src/core/lombok/javac/JavacNode.java10
-rw-r--r--test/transform/resource/after-delombok/WithByOnRecord.java5
-rw-r--r--test/transform/resource/after-delombok/WithByOnRecordComponent.java6
-rw-r--r--test/transform/resource/after-delombok/WithOnRecordComponent.java6
-rw-r--r--test/transform/resource/after-ecj/WithByOnRecord.java7
-rw-r--r--test/transform/resource/after-ecj/WithByOnRecordComponent.java13
-rw-r--r--test/transform/resource/after-ecj/WithOnRecordComponent.java13
-rw-r--r--test/transform/resource/before/WithByOnRecord.java3
-rw-r--r--test/transform/resource/before/WithByOnRecordComponent.java6
-rw-r--r--test/transform/resource/before/WithOnRecordComponent.java6
13 files changed, 67 insertions, 35 deletions
diff --git a/src/core/lombok/core/LombokNode.java b/src/core/lombok/core/LombokNode.java
index abfc66a6..34273a86 100644
--- a/src/core/lombok/core/LombokNode.java
+++ b/src/core/lombok/core/LombokNode.java
@@ -160,18 +160,16 @@ public abstract class LombokNode<A extends AST<A, L, N>, L extends LombokNode<A,
List<L> fields = new ArrayList<L>();
for (L potentialField : type.down()) {
if (potentialField.getKind() != Kind.FIELD) continue;
- if (fieldContainsAnnotation(potentialField.get(), get())) fields.add(potentialField);
+ for (L child : potentialField.down()) {
+ if (child.getKind() != Kind.ANNOTATION) continue;
+ if (child.get() == get()) fields.add(potentialField);
+ }
}
return fields;
}
/**
- * Return {@code true} if the annotation is attached to the field.
- */
- protected abstract boolean fieldContainsAnnotation(N field, N annotation);
-
- /**
* Returns the direct parent node in the AST tree of this node. For example, a local variable declaration's
* direct parent can be e.g. an If block, but its {@code up()} {@code LombokNode} is the {@code Method} that contains it.
*/
diff --git a/src/core/lombok/eclipse/EclipseNode.java b/src/core/lombok/eclipse/EclipseNode.java
index 12e9ccdb..361a8d42 100644
--- a/src/core/lombok/eclipse/EclipseNode.java
+++ b/src/core/lombok/eclipse/EclipseNode.java
@@ -143,16 +143,6 @@ public class EclipseNode extends lombok.core.LombokNode<EclipseAST, EclipseNode,
}
}
- @Override protected boolean fieldContainsAnnotation(ASTNode field, ASTNode annotation) {
- if (!(field instanceof FieldDeclaration)) return false;
- FieldDeclaration f = (FieldDeclaration) field;
- if (f.annotations == null) return false;
- for (Annotation childAnnotation : f.annotations) {
- if (childAnnotation == annotation) return true;
- }
- return false;
- }
-
/** {@inheritDoc} */
@Override public String getName() {
final char[] n;
diff --git a/src/core/lombok/eclipse/handlers/HandleWithBy.java b/src/core/lombok/eclipse/handlers/HandleWithBy.java
index 40e2d524..5f229aaf 100644
--- a/src/core/lombok/eclipse/handlers/HandleWithBy.java
+++ b/src/core/lombok/eclipse/handlers/HandleWithBy.java
@@ -29,9 +29,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Set;
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.eclipse.jdt.internal.compiler.ast.AllocationExpression;
@@ -138,10 +136,7 @@ public class HandleWithBy extends EclipseAnnotationHandler<WithBy> {
switch (node.getKind()) {
case FIELD:
- Set<EclipseNode> fields = new LinkedHashSet<EclipseNode>();
- fields.add(node);
- fields.addAll(annotationNode.upFromAnnotationToFields());
- createWithByForFields(level, fields, annotationNode, true, onMethod);
+ createWithByForFields(level, annotationNode.upFromAnnotationToFields(), annotationNode, true, onMethod);
break;
case TYPE:
if (!onMethod.isEmpty()) {
diff --git a/src/core/lombok/javac/JavacNode.java b/src/core/lombok/javac/JavacNode.java
index 3de3f38b..e648cd51 100644
--- a/src/core/lombok/javac/JavacNode.java
+++ b/src/core/lombok/javac/JavacNode.java
@@ -186,16 +186,6 @@ public class JavacNode extends lombok.core.LombokNode<JavacAST, JavacNode, JCTre
return false;
}
- @Override protected boolean fieldContainsAnnotation(JCTree field, JCTree annotation) {
- if (!(field instanceof JCVariableDecl)) return false;
- JCVariableDecl f = (JCVariableDecl) field;
- if (f.mods.annotations == null) return false;
- for (JCAnnotation childAnnotation : f.mods.annotations) {
- if (childAnnotation == annotation) return true;
- }
- return false;
- }
-
/**
* Convenient shortcut to the owning JavacAST object's getTreeMaker method.
*
diff --git a/test/transform/resource/after-delombok/WithByOnRecord.java b/test/transform/resource/after-delombok/WithByOnRecord.java
index 43a4c8c3..d6a24a9a 100644
--- a/test/transform/resource/after-delombok/WithByOnRecord.java
+++ b/test/transform/resource/after-delombok/WithByOnRecord.java
@@ -3,4 +3,9 @@ record WithByOnRecord(String a, String b) {
public WithByOnRecord withABy(final java.util.function.Function<? super String, ? extends String> transformer) {
return new WithByOnRecord(transformer.apply(this.a), this.b);
}
+
+ @java.lang.SuppressWarnings("all")
+ public WithByOnRecord withBBy(final java.util.function.Function<? super String, ? extends String> transformer) {
+ return new WithByOnRecord(this.a, transformer.apply(this.b));
+ }
}
diff --git a/test/transform/resource/after-delombok/WithByOnRecordComponent.java b/test/transform/resource/after-delombok/WithByOnRecordComponent.java
new file mode 100644
index 00000000..5af50625
--- /dev/null
+++ b/test/transform/resource/after-delombok/WithByOnRecordComponent.java
@@ -0,0 +1,6 @@
+record WithByOnRecordComponent(String a, String b) {
+ @java.lang.SuppressWarnings("all")
+ public WithByOnRecordComponent withABy(final java.util.function.Function<? super String, ? extends String> transformer) {
+ return new WithByOnRecordComponent(transformer.apply(this.a), this.b);
+ }
+}
diff --git a/test/transform/resource/after-delombok/WithOnRecordComponent.java b/test/transform/resource/after-delombok/WithOnRecordComponent.java
new file mode 100644
index 00000000..a5f4ec36
--- /dev/null
+++ b/test/transform/resource/after-delombok/WithOnRecordComponent.java
@@ -0,0 +1,6 @@
+record WithOnRecordComponent(String a, String b) {
+ @java.lang.SuppressWarnings("all")
+ public WithOnRecordComponent withA(final String a) {
+ return this.a == a ? this : new WithOnRecordComponent(a, this.b);
+ }
+}
diff --git a/test/transform/resource/after-ecj/WithByOnRecord.java b/test/transform/resource/after-ecj/WithByOnRecord.java
index 9048c9f4..c40841c8 100644
--- a/test/transform/resource/after-ecj/WithByOnRecord.java
+++ b/test/transform/resource/after-ecj/WithByOnRecord.java
@@ -1,8 +1,8 @@
import lombok.experimental.WithBy;
-record WithByOnRecord(String a, String b) {
+@WithBy record WithByOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public WithByOnRecord( String a, String b) {
+ public WithByOnRecord(String a, String b) {
super();
.a = a;
.b = b;
@@ -10,4 +10,7 @@ record WithByOnRecord(String a, String b) {
public @java.lang.SuppressWarnings("all") WithByOnRecord withABy(final java.util.function.Function<? super String, ? extends String> transformer) {
return new WithByOnRecord(transformer.apply(this.a), this.b);
}
+ public @java.lang.SuppressWarnings("all") WithByOnRecord withBBy(final java.util.function.Function<? super String, ? extends String> transformer) {
+ return new WithByOnRecord(this.a, transformer.apply(this.b));
+ }
}
diff --git a/test/transform/resource/after-ecj/WithByOnRecordComponent.java b/test/transform/resource/after-ecj/WithByOnRecordComponent.java
new file mode 100644
index 00000000..19fe508c
--- /dev/null
+++ b/test/transform/resource/after-ecj/WithByOnRecordComponent.java
@@ -0,0 +1,13 @@
+import lombok.experimental.WithBy;
+record WithByOnRecordComponent(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public WithByOnRecordComponent( String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+ public @java.lang.SuppressWarnings("all") WithByOnRecordComponent withABy(final java.util.function.Function<? super String, ? extends String> transformer) {
+ return new WithByOnRecordComponent(transformer.apply(this.a), this.b);
+ }
+}
diff --git a/test/transform/resource/after-ecj/WithOnRecordComponent.java b/test/transform/resource/after-ecj/WithOnRecordComponent.java
new file mode 100644
index 00000000..42028f81
--- /dev/null
+++ b/test/transform/resource/after-ecj/WithOnRecordComponent.java
@@ -0,0 +1,13 @@
+import lombok.With;
+record WithOnRecordComponent(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public WithOnRecordComponent( String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+ public @java.lang.SuppressWarnings("all") WithOnRecordComponent withA(final String a) {
+ return ((this.a == a) ? this : new WithOnRecordComponent(a, this.b));
+ }
+}
diff --git a/test/transform/resource/before/WithByOnRecord.java b/test/transform/resource/before/WithByOnRecord.java
index 98cbff9b..6c7b8e2d 100644
--- a/test/transform/resource/before/WithByOnRecord.java
+++ b/test/transform/resource/before/WithByOnRecord.java
@@ -2,5 +2,6 @@
import lombok.experimental.WithBy;
-record WithByOnRecord(@WithBy String a, String b) {
+@WithBy
+record WithByOnRecord(String a, String b) {
} \ No newline at end of file
diff --git a/test/transform/resource/before/WithByOnRecordComponent.java b/test/transform/resource/before/WithByOnRecordComponent.java
new file mode 100644
index 00000000..7e0f0f19
--- /dev/null
+++ b/test/transform/resource/before/WithByOnRecordComponent.java
@@ -0,0 +1,6 @@
+// version 14:
+
+import lombok.experimental.WithBy;
+
+record WithByOnRecordComponent(@WithBy String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/WithOnRecordComponent.java b/test/transform/resource/before/WithOnRecordComponent.java
new file mode 100644
index 00000000..6f827851
--- /dev/null
+++ b/test/transform/resource/before/WithOnRecordComponent.java
@@ -0,0 +1,6 @@
+// version 14:
+
+import lombok.With;
+
+record WithOnRecordComponent(@With String a, String b) {
+} \ No newline at end of file