org.aspectj/tests/new/AfterReturningParamMatching.java
ehilsdal 520ad8a1aa Fix for Bugzilla Bug 42668
effect of an after returning type incompatible with a join point return type
2004-01-29 15:30:42 +00:00

73 lines
2.4 KiB
Java

import org.aspectj.testing.Tester;
// this test verifies the matching behaivor for after returning with a typed parameter.
public class AfterReturningParamMatching {
public static void main(String[] args) {
goBoolean(false);
Tester.checkAndClearEvents(new String[] { "boolean", "Object" });
goByte(1);
Tester.checkAndClearEvents(new String[] { "byte", "int", "long", "Object"});
goInt(2);
Tester.checkAndClearEvents(new String[] { "int", "long", "Object" });
goLong(3);
Tester.checkAndClearEvents(new String[] { "long", "Object" });
goObject(new Object());
Tester.checkAndClearEvents(new String[] { "Object" });
goObject(new Integer(4));
Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
goObject(null);
Tester.checkAndClearEvents(new String[] { "Object" });
goNumber(new Long(5));
Tester.checkAndClearEvents(new String[] { "Object", "Number" });
goNumber(new Integer(6));
Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
goNumber(null);
Tester.checkAndClearEvents(new String[] { "Object", "Number" });
goInteger(new Integer(7));
Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
goInteger(null);
Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
}
static boolean goBoolean(boolean b) { return b; }
static byte goByte(int i) { return (byte) i; }
static int goInt(int i) { return i; }
static long goLong(int i) { return (long) i; }
static Object goObject(Object o) { return o; }
static Number goNumber(Number o) { return o; }
static Integer goInteger(Integer o) { return o; }
}
aspect A {
pointcut methodsInQuestion():
call(* goBoolean(*)) ||
call(* goByte(*)) ||
call(* goInt(*)) ||
call(* goLong(*)) ||
call(* goObject(*)) ||
call(* goNumber(*)) ||
call(* goInteger(*));
after() returning(boolean b): methodsInQuestion() { Tester.event("boolean"); }
after() returning(byte b): methodsInQuestion() { Tester.event("byte"); }
after() returning(int b): methodsInQuestion() { Tester.event("int"); }
after() returning(long b): methodsInQuestion() { Tester.event("long"); }
after() returning(Object b): methodsInQuestion() { Tester.event("Object"); }
after() returning(Number b): methodsInQuestion() { Tester.event("Number"); }
after() returning(Integer b): methodsInQuestion() { Tester.event("Integer"); }
}