aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/lombok/javac/handlers/HandleDelegate.java3
-rw-r--r--test/transform/resource/after-delombok/DelegateTypesAndExcludes.java35
-rw-r--r--test/transform/resource/after-ecj/DelegateTypesAndExcludes.java1
-rw-r--r--test/transform/resource/before/DelegateTypesAndExcludes.java28
4 files changed, 67 insertions, 0 deletions
diff --git a/src/core/lombok/javac/handlers/HandleDelegate.java b/src/core/lombok/javac/handlers/HandleDelegate.java
index 071aa3e4..e333daa3 100644
--- a/src/core/lombok/javac/handlers/HandleDelegate.java
+++ b/src/core/lombok/javac/handlers/HandleDelegate.java
@@ -21,6 +21,8 @@
*/
package lombok.javac.handlers;
+import static lombok.javac.handlers.JavacHandlerUtil.markAnnotationAsProcessed;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -90,6 +92,7 @@ public class HandleDelegate implements JavacAnnotationHandler<Delegate> {
"finalize()"));
@Override public boolean handle(AnnotationValues<Delegate> annotation, JCAnnotation ast, JavacNode annotationNode) {
+ markAnnotationAsProcessed(annotationNode, Delegate.class);
if (annotationNode.up().getKind() != Kind.FIELD) {
// As the annotation is legal on fields only, javac itself will take care of printing an error message for this.
return false;
diff --git a/test/transform/resource/after-delombok/DelegateTypesAndExcludes.java b/test/transform/resource/after-delombok/DelegateTypesAndExcludes.java
new file mode 100644
index 00000000..3f6f555d
--- /dev/null
+++ b/test/transform/resource/after-delombok/DelegateTypesAndExcludes.java
@@ -0,0 +1,35 @@
+class DelegatePlain {
+ private final BarImpl bar = new BarImpl();
+ private final FooImpl foo = new FooImpl();
+
+ private static class FooImpl implements Foo {
+ public void foo() {
+ }
+
+ public void bar(java.util.ArrayList<java.lang.String> list) {
+ }
+ }
+
+ private static class BarImpl implements Bar {
+ public void bar(java.util.ArrayList<java.lang.String> list) {
+ }
+ }
+
+ private static interface Foo extends Bar {
+ void foo();
+ }
+
+ private static interface Bar {
+ void bar(java.util.ArrayList<java.lang.String> list);
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public void bar(final java.util.ArrayList<java.lang.String> list) {
+ this.bar.bar(list);
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public void foo() {
+ this.foo.foo();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/DelegateTypesAndExcludes.java b/test/transform/resource/after-ecj/DelegateTypesAndExcludes.java
new file mode 100644
index 00000000..cb06d3c1
--- /dev/null
+++ b/test/transform/resource/after-ecj/DelegateTypesAndExcludes.java
@@ -0,0 +1 @@
+//ignore \ No newline at end of file
diff --git a/test/transform/resource/before/DelegateTypesAndExcludes.java b/test/transform/resource/before/DelegateTypesAndExcludes.java
new file mode 100644
index 00000000..da7fc4cb
--- /dev/null
+++ b/test/transform/resource/before/DelegateTypesAndExcludes.java
@@ -0,0 +1,28 @@
+import lombok.Delegate;
+class DelegatePlain {
+ @Delegate(types = Bar.class)
+ private final BarImpl bar = new BarImpl();
+ @Delegate(types = Foo.class, excludes = Bar.class)
+ private final FooImpl foo = new FooImpl();
+
+ private static class FooImpl implements Foo {
+ public void foo() {
+ }
+
+ public void bar(java.util.ArrayList<java.lang.String> list) {
+ }
+ }
+
+ private static class BarImpl implements Bar {
+ public void bar(java.util.ArrayList<java.lang.String> list) {
+ }
+ }
+
+ private static interface Foo extends Bar {
+ void foo();
+ }
+
+ private static interface Bar {
+ void bar(java.util.ArrayList<java.lang.String> list);
+ }
+} \ No newline at end of file