|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
-
- import org.aspectj.testing.Tester;
- import org.aspectj.lang.*;
- import org.aspectj.lang.reflect.*;
-
- import java.util.Arrays;
-
- /** @testcase PR#764 binding args with indeterminate prefix and suffix */
- public class IndeterminateArgsCE {
- public static void main (String[] args) {
- STarget c;
- c = new STarget();
- c = new STarget("s1");
- c = new STarget("s1", "s2");
- c = new STarget("s1", "s2", "s3");
- c.f();
- c.f("s1");
- c.f("s1", "s2");
- c.f("s1", "s2", "s3");
- OTarget o;
- o = new OTarget();
- o = new OTarget("o1");
- o = new OTarget("o1", "o2");
- o = new OTarget("o1", "o2", "o3");
- o.f();
- o.f("o1");
- o.f("o1", "o2");
- o.f("o1", "o2", "o3");
- }
- }
-
- class OTarget {
- OTarget() { }
- OTarget(String s1) { }
- OTarget(String s1, Object s2) { } // CE
- OTarget(String s1, Object s2, String s3) { } // CE
-
- void f() { }
- void f(String s1) { }
- void f(String s1, Object s2) { } // CE
- void f(String s1, Object s2, String s3) { } // CE
- }
- class STarget {
- STarget() { }
- STarget(String s1) { }
- STarget(String s1, String s2) { } // CE
- STarget(String s1, String s2, String s3) { }
-
- void f() { }
- void f(String s1) { }
- void f(String s1, String s2) { } // CE
- void f(String s1, String s2, String s3) { }
- }
-
- aspect A {
-
- void check(String pc, JoinPoint jp) {
- Class[] types = ((CodeSignature) jp.getSignature()).getParameterTypes();
- //T.e(pc + ": " + Arrays.asList(types));
- }
-
- pointcut safeS() : target(STarget) && (call(new(..)) || call(* *(..)));
- pointcut safeO() : target(OTarget) && (call(new(..)) || call(* *(..)));
-
- pointcut o1Anywhere() : args(.., Object, ..);
- pointcut s1Anywhere() : args(.., String, ..);
- pointcut bo1Anywhere(Object o) : args(.., o, ..);
- pointcut bs1Anywhere(String s) : args(.., s, ..);
-
- before() : safeO() && o1Anywhere() { check ("o1Anywhere()", thisJoinPoint); }
- before(Object o1) : safeO() && bo1Anywhere(o1) { check ("bo1Anywhere(o1)", thisJoinPoint); }
- before() : safeS() && s1Anywhere() { check ("s1Anywhere()", thisJoinPoint); }
- before(String s1) : safeS() && bs1Anywhere(s1) { check ("bs1Anywhere(s1)", thisJoinPoint); }
- }
-
-
|