|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
-
- import org.aspectj.testing.Tester;
- import org.aspectj.lang.*;
- import org.aspectj.lang.reflect.*;
-
- /** @testcase PR#764 binding handler args with indeterminate prefix and suffix */
- public class IndeterminateHandlerArg {
- public static void main (String[] args) {
- Throwable throwable = new Throwable("throwable");
- Error error = new Error("error");
- RuntimeException runtime = new RuntimeException("runtime") {
- RuntimeException f() { return this; }
- }.f();
-
- try { throw error; }
- catch (Error e) { A.event(e.getMessage()); }
-
- try { throw throwable; }
- catch (Throwable e) { A.event(e.getMessage()); }
- try { throw error; }
- catch (Throwable e) { A.event(e.getMessage()); }
- try { throw runtime; }
- catch (Throwable e) { A.event(e.getMessage()); }
-
- try { throw runtime; }
- catch (RuntimeException e) { A.event(e.getMessage()); }
-
- Tester.checkEventsFromFile("IndeterminateHandlerArg.events");
- }
- }
-
- aspect A {
- void e(String label, JoinPoint jp) {
- e(label, jp, (Throwable) jp.getArgs()[0]);
- }
- void e(String label, JoinPoint jp, Throwable t) {
- String m = jp.toLongString()
- + ": " + t.getClass().getName()
- + " - " + t.getMessage()
- + " @ " + label;
- event(m);
- }
- static void event(String m) {
- Tester.event(m);
- }
-
- pointcut hd() : withincode(static void main(..)) && handler(*);
-
- before (Throwable t) : hd() && args(t) { e("before Throwable", thisJoinPoint, t); }
- before (Error t) : hd() && args(t) { e("before Error", thisJoinPoint, t); }
- before () : hd() && args(Throwable) { e("before args(Throwable)", thisJoinPoint); }
- before () : hd() && args(Error) { e("before args(Error)", thisJoinPoint); }
- before () : hd() && args(Throwable,..) { e("before args(Throwable,..)", thisJoinPoint); }
- before () : hd() && args(..,Throwable) { e("before args(..,Throwable)", thisJoinPoint); }
- before () : hd() && args(Error,..) { e("before args(Error,..)", thisJoinPoint); }
- before () : hd() && args(..,Error) { e("before args(..,Error)", thisJoinPoint); }
- before (Throwable t) : hd() && args(t,..) { e("before Throwable,..", thisJoinPoint, t); }
- before (Error t) : hd() && args(t,..) { e("before Error,..", thisJoinPoint, t); }
- before (Throwable t) : hd() && args(..,t) { e("before ..,Throwable", thisJoinPoint, t); }
- before (Error t) : hd() && args(..,t) { e("before ..,Error", thisJoinPoint, t); }
-
- before () : hd() && args(Throwable,*) { Tester.check(false, "args(Throwable,*)"); }
- before () : hd() && args(*,Throwable) { Tester.check(false, "args(*,Throwable)"); }
- before () : hd() && args(Error,*) { Tester.check(false, "args(Error,*)"); }
- before () : hd() && args(*,Error) { Tester.check(false, "args(*,Error)"); }
- before (Throwable t) : hd() && args(t,*) { Tester.check(false, "args((Throwable)t,*)"); }
- before (Error t) : hd() && args(t,*) { Tester.check(false, "args((Error)t,*)"); }
- before (Throwable t) : hd() && args(*,t) { Tester.check(false, "args(*,(Throwable)t)"); }
- before (Error t) : hd() && args(*,t) { Tester.check(false, "args(*,(Error)t)"); }
- }
-
|