diff options
author | aclement <aclement> | 2005-11-11 11:23:43 +0000 |
---|---|---|
committer | aclement <aclement> | 2005-11-11 11:23:43 +0000 |
commit | 1cd86ff91ecff7901d5984758821b89df1acd3bc (patch) | |
tree | 9f9086df760bd89aaac20dffa367fd005586d2a7 | |
parent | ed1585ae59552692c892bca34bd61e47b5da7f3e (diff) | |
download | aspectj-1cd86ff91ecff7901d5984758821b89df1acd3bc.tar.gz aspectj-1cd86ff91ecff7901d5984758821b89df1acd3bc.zip |
tests for pr113447 from Helen Hawkins.
-rw-r--r-- | tests/bugs150/pr113447/PR113447.java (renamed from tests/bugs150/PR113447.java) | 6 | ||||
-rw-r--r-- | tests/bugs150/pr113447/PR113447a.java | 65 | ||||
-rw-r--r-- | tests/bugs150/pr113447/PR113447b.java | 27 | ||||
-rw-r--r-- | tests/bugs150/pr113447/PR113447c.java | 27 | ||||
-rw-r--r-- | tests/bugs150/pr113447/PR113447d.java | 25 | ||||
-rw-r--r-- | tests/bugs150/pr113447/PR113447e.java | 36 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java | 29 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc150/ajc150.xml | 32 |
8 files changed, 240 insertions, 7 deletions
diff --git a/tests/bugs150/PR113447.java b/tests/bugs150/pr113447/PR113447.java index 8fd45ed06..074f8037f 100644 --- a/tests/bugs150/PR113447.java +++ b/tests/bugs150/pr113447/PR113447.java @@ -15,12 +15,13 @@ aspect Super { // second method doesn't exist pointcut pc1(PR113447 s) : - (this(s) && execution(void method1())) - || (this(s) && execution(void method2())); + (this(PR113447) && this(s) && execution(void method1()) && this(PR113447)) + || (this(s) && execution(void method2()) && this(PR113447)); before(PR113447 s) : pc1(s) { } +/* // second method does exist pointcut pc2(PR113447 s) : (this(s) && execution(void method1())) @@ -36,5 +37,6 @@ aspect Super { before(PR113447 s) : pc3(s) { } +*/ } diff --git a/tests/bugs150/pr113447/PR113447a.java b/tests/bugs150/pr113447/PR113447a.java new file mode 100644 index 000000000..d720c5244 --- /dev/null +++ b/tests/bugs150/pr113447/PR113447a.java @@ -0,0 +1,65 @@ +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +@interface Annotation{}; + +@Annotation +public class PR113447a { + + public static void main(String[] args) { + PR113447a me = new PR113447a(); + me.method1(); + me.method3(); + me.method4(2); + } + + public void method1(){} + + public void method3(){} + + public void method4(int i){} + public void method5(int i){} +} + +aspect Super { + + // second method doesn't exist + pointcut pc1(Annotation a) : + (@this(a) && execution(void method1())) + || (@this(a) && execution(void method2())); + + before(Annotation a) : pc1(a) {} + + // second method does exist + pointcut pc2(Annotation a) : + (@this(a) && execution(void method1())) + || (@this(a) && execution(void method3())); + + before(Annotation a) : pc2(a) {} + + // second method doesn't exist + pointcut pc3(Annotation a) : + (@target(a) && call(void method1())) + || (@target(a) && call(void method2())); + + before(Annotation a) : pc3(a) { + } + + // second method does exist + pointcut pc4(Annotation a) : + (@target(a) && call(void method1())) + || (@target(a) && call(void method3())); + + before(Annotation a) : pc4(a) { + } + + // @this equivalent of BaseTests.test024 which was affected by + // the fix for the non annotation version + pointcut p(Annotation a) : + @target(a) && (call(void method4(int)) + || call(void method5(int))); + + before(Annotation a) : p(a) {} + after(Annotation a): p(a) {} +} diff --git a/tests/bugs150/pr113447/PR113447b.java b/tests/bugs150/pr113447/PR113447b.java new file mode 100644 index 000000000..baa0abaa6 --- /dev/null +++ b/tests/bugs150/pr113447/PR113447b.java @@ -0,0 +1,27 @@ +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +@interface Annotation{}; + +@Annotation +public class PR113447b { + + public static void main(String[] args) { + PR113447b me = new PR113447b(); + me.method4(1); + } + + public void method4(int i){} + public void method5(int i){} +} + +aspect Super { + + pointcut p(Annotation a) : + @within(a) && (call(void method4(int)) + || call(void method5(int))); + + before(Annotation a) : p(a) {} + +} diff --git a/tests/bugs150/pr113447/PR113447c.java b/tests/bugs150/pr113447/PR113447c.java new file mode 100644 index 000000000..d903dbb29 --- /dev/null +++ b/tests/bugs150/pr113447/PR113447c.java @@ -0,0 +1,27 @@ +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +@interface Annotation{}; + +public class PR113447c { + + @Annotation + public static void main(String[] args) { + PR113447c me = new PR113447c(); + me.method4(1); + } + + public void method4(int i){} + public void method5(int i){} +} + +aspect Super { + + pointcut p(Annotation a) : + @withincode(a) && (call(void method4(int)) + || call(void method5(int))); + + before(Annotation a) : p(a) {} + +} diff --git a/tests/bugs150/pr113447/PR113447d.java b/tests/bugs150/pr113447/PR113447d.java new file mode 100644 index 000000000..bf7520d28 --- /dev/null +++ b/tests/bugs150/pr113447/PR113447d.java @@ -0,0 +1,25 @@ +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +@interface Annotation{}; + +public class PR113447d { + + public static void main(String[] args) { + PR113447d me = new PR113447d(); + me.method4(1); + } + + @Annotation public void method4(int i){} + @Annotation public void method5(int i){} +} + +aspect Super { + + pointcut p(Annotation a) : + @annotation(a) && (call(void method4(int)) + || call(void method5(int))); + + before(Annotation a) : p(a) {} +} diff --git a/tests/bugs150/pr113447/PR113447e.java b/tests/bugs150/pr113447/PR113447e.java new file mode 100644 index 000000000..424089d7c --- /dev/null +++ b/tests/bugs150/pr113447/PR113447e.java @@ -0,0 +1,36 @@ +public class PR113447e { + + public static void main(String[] args) { + PR113447e me = new PR113447e(); + me.method1(1); + me.method3(2); + } + + public void method1(int i){} + + public void method3(int i){} +} + +aspect Super { + + // second method doesn't exist + pointcut pc1(int i) : + (args(i) && call(void method1(int))) + || (args(i) && call(void method2(int))); + + before(int i) : pc1(i) {} + + // second method does exist + pointcut pc2(int i) : + (args(i) && call(void method1(int))) + || (args(i) && call(void method3(int))); + + before(int i) : pc2(i) {} + + // ensure this still works + pointcut pc3(int i) : + args(i) && (call(void method1(int)) || call(void method2(int))); + + before(int i) : pc3(i) {} + after(int i) : pc3(i) {} +} diff --git a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java index c2e2114f7..a7993fb86 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java @@ -658,10 +658,6 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase { runTest("weaveinfo message for declare at method on an ITDd method"); } - public void testNoVerifyErrorWithTwoThisPCDs_pr113447() { - runTest("no verify error with two this pcds"); - } - public void testITDCWithNoExplicitConsCall() { runTest("ITDC with no explicit cons call"); } @@ -682,6 +678,31 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase { runTest("pointcut expression containing 'assert'"); } + public void testNoVerifyErrorWithTwoThisPCDs_pr113447() { + runTest("no verify error with two this pcds"); + } + + public void testNoVerifyErrorWithTwoAtThisPCDs_pr113447() { + runTest("no verify error with two at this pcds"); + } + + public void testNoVerifyErrorWithAtWithinPCDs_pr113447() { + runTest("no verify error with at within pcds"); + } + + public void testNoVerifyErrorWithAtWithincodePCDs_pr113447() { + runTest("no verify error with at withincode pcds"); + } + + public void testNoVerifyErrorWithAtAnnotationPCDs_pr113447() { + runTest("no verify error with at annotation pcds"); + } + + public void testNoVerifyErrorWithTwoArgsPCDs_pr113447() { + runTest("no verify error with two args pcds"); + } + + // helper methods..... public SyntheticRepository createRepos(File cpentry) { diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml index 80492b878..e5122ff09 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml +++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml @@ -934,12 +934,42 @@ </compile> </ajc-test> - <ajc-test dir="bugs150" title="no verify error with two this pcds"> + <ajc-test dir="bugs150/pr113447" title="no verify error with two this pcds"> <compile files="PR113447.java"> </compile> <run class="PR113447"/> </ajc-test> + <ajc-test dir="bugs150/pr113447" title="no verify error with two at this pcds"> + <compile files="PR113447a.java" options="-1.5"> + </compile> + <run class="PR113447a"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113447" title="no verify error with at within pcds"> + <compile files="PR113447b.java" options="-1.5"> + </compile> + <run class="PR113447b"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113447" title="no verify error with at withincode pcds"> + <compile files="PR113447c.java" options="-1.5"> + </compile> + <run class="PR113447c"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113447" title="no verify error with at annotation pcds"> + <compile files="PR113447d.java" options="-1.5"> + </compile> + <run class="PR113447d"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113447" title="no verify error with two args pcds"> + <compile files="PR113447e.java" options="-1.5"> + </compile> + <run class="PR113447e"/> + </ajc-test> + <!-- ============================================================================ --> <!-- ============================================================================ --> |