+++ /dev/null
-public class PR113447 {
-
- public static void main(String[] args) {
- PR113447 me = new PR113447();
- me.method1();
- me.method3();
- }
-
- public void method1(){}
-
- public void method3(){}
-}
-
-aspect Super {
-
- // second method doesn't exist
- pointcut pc1(PR113447 s) :
- (this(s) && execution(void method1()))
- || (this(s) && execution(void method2()));
-
- before(PR113447 s) : pc1(s) {
- }
-
- // second method does exist
- pointcut pc2(PR113447 s) :
- (this(s) && execution(void method1()))
- || (this(s) && execution(void method3()));
-
- before(PR113447 s) : pc2(s) {
- }
-
- // second method doesn't exist
- pointcut pc3(PR113447 s) :
- (args(s) && execution(void method1()))
- || (args(s) && execution(void method2()));
-
- before(PR113447 s) : pc3(s) {
- }
-
-}
--- /dev/null
+public class PR113447 {
+
+ public static void main(String[] args) {
+ PR113447 me = new PR113447();
+ me.method1();
+ me.method3();
+ }
+
+ public void method1(){}
+
+ public void method3(){}
+}
+
+aspect Super {
+
+ // second method doesn't exist
+ pointcut pc1(PR113447 s) :
+ (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()))
+ || (this(s) && execution(void method3()));
+
+ before(PR113447 s) : pc2(s) {
+ }
+
+ // second method doesn't exist
+ pointcut pc3(PR113447 s) :
+ (args(s) && execution(void method1()))
+ || (args(s) && execution(void method2()));
+
+ before(PR113447 s) : pc3(s) {
+ }
+*/
+
+}
--- /dev/null
+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) {}
+}
--- /dev/null
+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) {}
+
+}
--- /dev/null
+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) {}
+
+}
--- /dev/null
+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) {}
+}
--- /dev/null
+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) {}
+}
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");
}
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) {
</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>
+
<!-- ============================================================================ -->
<!-- ============================================================================ -->