summaryrefslogtreecommitdiffstats
path: root/tests/new
diff options
context:
space:
mode:
Diffstat (limited to 'tests/new')
-rw-r--r--tests/new/declareParents/Driver.java33
-rw-r--r--tests/new/declareParents/IllegalAdoption.java16
2 files changed, 49 insertions, 0 deletions
diff --git a/tests/new/declareParents/Driver.java b/tests/new/declareParents/Driver.java
new file mode 100644
index 000000000..ec70d26a1
--- /dev/null
+++ b/tests/new/declareParents/Driver.java
@@ -0,0 +1,33 @@
+import org.aspectj.testing.Tester;
+
+public class Driver {
+ public static void main(String[] args) { test(); }
+
+ public static void test() {
+
+ C c = new C();
+ D d = new D();
+ E e = new E();
+
+ Tester.check( c instanceof A, "C should extend A");
+ Tester.check( c instanceof B, "Declare parents threw away superclass info: C should extend B");
+
+ Tester.check( d instanceof A, "D should extend A");
+ Tester.check( e instanceof A, "E should extend A");
+
+ }
+
+
+ static class A {};
+ static class B extends A {};
+ static class C extends B {};
+
+ static class D {};
+ static class E extends D {};
+
+ static aspect Adoption {
+ declare parents : C extends A;
+ declare parents : D extends A;
+ };
+}
+
diff --git a/tests/new/declareParents/IllegalAdoption.java b/tests/new/declareParents/IllegalAdoption.java
new file mode 100644
index 000000000..3df00a8e1
--- /dev/null
+++ b/tests/new/declareParents/IllegalAdoption.java
@@ -0,0 +1,16 @@
+import org.aspectj.testing.Tester;
+
+public class IllegalAdoption {
+
+ static class A {};
+ static class B extends A {};
+ static class C extends B {};
+
+ static class D {};
+ static class E extends D {};
+
+ static aspect Adoption {
+ declare parents : E extends C; // should cause a compilation error
+ }
+}
+