aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authoraclement <aclement>2009-01-06 22:05:13 +0000
committeraclement <aclement>2009-01-06 22:05:13 +0000
commit10f564c53f96eadd15817b75d114a43460cef861 (patch)
treec995c2b96cd833da4482c4b2ce2183158065a78c /tests
parent77f22ee2d3252f0e63bdae165519581ac5afddc2 (diff)
downloadaspectj-10f564c53f96eadd15817b75d114a43460cef861.tar.gz
aspectj-10f564c53f96eadd15817b75d114a43460cef861.zip
164016:258788: testcode
Diffstat (limited to 'tests')
-rw-r--r--tests/bugs164/pr164016/Code.aj71
-rw-r--r--tests/bugs164/pr258788/NameAware.java5
-rw-r--r--tests/bugs164/pr258788/NameManager.java6
-rw-r--r--tests/bugs164/pr258788/NameManagerImpl.java15
-rw-r--r--tests/bugs164/pr258788/StartClass.java19
-rw-r--r--tests/bugs164/pr258788/TargetClass.java5
-rw-r--r--tests/bugs164/pr258788/TestAspect.java12
7 files changed, 133 insertions, 0 deletions
diff --git a/tests/bugs164/pr164016/Code.aj b/tests/bugs164/pr164016/Code.aj
new file mode 100644
index 000000000..e60f09936
--- /dev/null
+++ b/tests/bugs164/pr164016/Code.aj
@@ -0,0 +1,71 @@
+package test;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.DeclareParents;
+
+interface A {
+ void doA();
+}
+
+interface BBad extends A {
+ void doB();
+}
+
+interface BGood extends A {
+ void doB();
+ void doA();
+}
+
+class TargetBad { }
+class TargetGood { }
+
+@Aspect
+ class DeclareParentsAspect {
+
+// @DeclareParents(value = "test.TargetGood", defaultImpl = BImplGood.class)
+ // private BGood bGood;
+
+ @DeclareParents(value = "test.TargetBad", defaultImpl = BImplGood.class)
+ private BBad bBad;
+
+ public static class BImplGood implements BGood, BBad {
+
+ public void doB() {
+ System.out.println("doB");
+ }
+
+ public void doA() {
+ System.out.println("doA");
+ }
+ }
+}
+
+public class Code {
+ public static void main(String... args) {
+/*
+ {
+ TargetGood target = new TargetGood();
+ BGood b = (BGood) target;
+ b.doB();
+ b.doA();
+ }
+*/
+ {
+ TargetBad target = new TargetBad();
+ BBad b = (BBad) target;
+ b.doB();
+
+ /*
+ The following line is the problem.
+ The Generated class should refer to ajc$test_DeclareParentsAspect$test_BBad
+
+ Instead...
+
+ Exception in thread "main" java.lang.NoSuchFieldError: ajc$test_DeclareParentsAspect$test_A
+ at test.TargetBad.doA(TargetBad.java:1)
+ at test.Main.main(Main.java:21)
+ */
+ b.doA();
+ }
+ }
+
+}
diff --git a/tests/bugs164/pr258788/NameAware.java b/tests/bugs164/pr258788/NameAware.java
new file mode 100644
index 000000000..7159a520c
--- /dev/null
+++ b/tests/bugs164/pr258788/NameAware.java
@@ -0,0 +1,5 @@
+package com;
+
+public interface NameAware {
+ void setName(String name);
+}
diff --git a/tests/bugs164/pr258788/NameManager.java b/tests/bugs164/pr258788/NameManager.java
new file mode 100644
index 000000000..531a9cef2
--- /dev/null
+++ b/tests/bugs164/pr258788/NameManager.java
@@ -0,0 +1,6 @@
+package com;
+
+public interface NameManager extends NameAware {
+ String getName();
+}
+
diff --git a/tests/bugs164/pr258788/NameManagerImpl.java b/tests/bugs164/pr258788/NameManagerImpl.java
new file mode 100644
index 000000000..bbd8e743b
--- /dev/null
+++ b/tests/bugs164/pr258788/NameManagerImpl.java
@@ -0,0 +1,15 @@
+package com;
+
+public class NameManagerImpl implements NameManager {
+
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
+
diff --git a/tests/bugs164/pr258788/StartClass.java b/tests/bugs164/pr258788/StartClass.java
new file mode 100644
index 000000000..fd25ac169
--- /dev/null
+++ b/tests/bugs164/pr258788/StartClass.java
@@ -0,0 +1,19 @@
+package com;
+
+public class StartClass {
+ public static void main(String[] args) {
+ TargetClass bean = new TargetClass();
+ System.out.println("IS-A NameAware: " + (bean instanceof NameAware));
+ System.out.println("IS-A NameManager: " + (bean instanceof
+NameManager));
+ System.out.println("");
+ System.out.println("Calling get() ...");
+ ((NameManager)bean).getName();
+ System.out.println("Done.");
+ System.out.println("");
+ System.out.println("Calling set() ... ");
+ ((NameAware)bean).setName("asd");
+ System.out.println("Done.");
+ }
+}
+
diff --git a/tests/bugs164/pr258788/TargetClass.java b/tests/bugs164/pr258788/TargetClass.java
new file mode 100644
index 000000000..3e5cd0b6a
--- /dev/null
+++ b/tests/bugs164/pr258788/TargetClass.java
@@ -0,0 +1,5 @@
+package com;
+
+public class TargetClass {
+}
+
diff --git a/tests/bugs164/pr258788/TestAspect.java b/tests/bugs164/pr258788/TestAspect.java
new file mode 100644
index 000000000..c91266c9c
--- /dev/null
+++ b/tests/bugs164/pr258788/TestAspect.java
@@ -0,0 +1,12 @@
+package com;
+
+import org.aspectj.lang.annotation.*;
+
+@Aspect
+public class TestAspect {
+
+ @DeclareParents(value = "com.TargetClass", defaultImpl =
+ NameManagerImpl.class)
+ private NameManager nameManager;
+}
+