aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bugs193/542682
diff options
context:
space:
mode:
authorAndy Clement <aclement@pivotal.io>2019-01-17 12:20:57 -0800
committerAndy Clement <aclement@pivotal.io>2019-01-17 12:20:57 -0800
commit1a819be178964e0ec0c1caf5c515e3a9b9aa0df0 (patch)
treee8324e0c545f4bda6a0ced0c9a604886d416a0ee /tests/bugs193/542682
parent3abc52595deac0e9cd4a427a7eb6fe81170dc618 (diff)
downloadaspectj-1a819be178964e0ec0c1caf5c515e3a9b9aa0df0.tar.gz
aspectj-1a819be178964e0ec0c1caf5c515e3a9b9aa0df0.zip
Dig deeper to find WildTypePattern in DeclareParents
The existing check crudely only checked the top level, failing to find nested WildTypePatterns. Resolves #542682
Diffstat (limited to 'tests/bugs193/542682')
-rw-r--r--tests/bugs193/542682/CaseA.java35
-rw-r--r--tests/bugs193/542682/EnumAspect04.aj12
-rw-r--r--tests/bugs193/542682/SimpleClass.java2
-rw-r--r--tests/bugs193/542682/SimpleEnum.java2
-rw-r--r--tests/bugs193/542682/SimpleEnum2.java2
5 files changed, 53 insertions, 0 deletions
diff --git a/tests/bugs193/542682/CaseA.java b/tests/bugs193/542682/CaseA.java
new file mode 100644
index 000000000..f39609643
--- /dev/null
+++ b/tests/bugs193/542682/CaseA.java
@@ -0,0 +1,35 @@
+import java.lang.annotation.*;
+import org.aspectj.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface SomeAnnotation {}
+
+@SomeAnnotation
+public class CaseA {
+ public static void main(String[]argv) {
+ CaseA ca = new CaseA();
+ ((I)ca).methodOne(); // will only succeed if mixin applied
+ }
+}
+
+@SomeAnnotation
+enum Color {R,G,B}
+
+aspect X {
+ @DeclareMixin("(@SomeAnnotation *)")
+ public static I createImplementation() {
+ System.out.println("Delegate factory invoked");
+ return new Implementation();
+ }
+}
+
+interface I {
+ void methodOne();
+}
+
+class Implementation implements I {
+ public void methodOne() {
+ System.out.println("methodOne running");
+ }
+}
+
diff --git a/tests/bugs193/542682/EnumAspect04.aj b/tests/bugs193/542682/EnumAspect04.aj
new file mode 100644
index 000000000..41a34c2f1
--- /dev/null
+++ b/tests/bugs193/542682/EnumAspect04.aj
@@ -0,0 +1,12 @@
+import java.lang.annotation.*;
+import java.lang.Enum;
+
+public aspect EnumAspect04 {
+ interface I {};
+ //declare parents: SimpleE* implements I;
+ //declare parents: !*Aspect04 implements I;
+ declare parents: @Foo * implements I;
+}
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface Foo {}
diff --git a/tests/bugs193/542682/SimpleClass.java b/tests/bugs193/542682/SimpleClass.java
new file mode 100644
index 000000000..ed1fe95fe
--- /dev/null
+++ b/tests/bugs193/542682/SimpleClass.java
@@ -0,0 +1,2 @@
+@Foo
+public class SimpleClass {}
diff --git a/tests/bugs193/542682/SimpleEnum.java b/tests/bugs193/542682/SimpleEnum.java
new file mode 100644
index 000000000..b5f5620f6
--- /dev/null
+++ b/tests/bugs193/542682/SimpleEnum.java
@@ -0,0 +1,2 @@
+@Foo
+public enum SimpleEnum { Red,Orange,Yellow,Green,Blue,Indigo,Violet };
diff --git a/tests/bugs193/542682/SimpleEnum2.java b/tests/bugs193/542682/SimpleEnum2.java
new file mode 100644
index 000000000..9aaf5a5f2
--- /dev/null
+++ b/tests/bugs193/542682/SimpleEnum2.java
@@ -0,0 +1,2 @@
+@Foo
+public enum SimpleEnum2 { Black, White };