123456789101112131415161718192021222324252627282930313233343536373839 |
- // Does annotating 'new' with a type work as desired?
-
- import org.aspectj.testing.Tester;
-
- public class ConstructorSignatures {
- public static void main(String[] args) {
- new A1();
- Tester.checkEqual(A.a0, 2, "A0 advice overcalled");
- Tester.checkEqual(A.a1, 1, "A1 advice overcalled");
- Tester.checkEqual(A.b, 0, "B advice overcalled");
- A.a0 = A.a1 = A.b = 0;
-
- new B();
- Tester.checkEqual(A.a0, 0, "-A0 advice overcalled");
- Tester.checkEqual(A.a1, 0, "-A1 advice overcalled");
- Tester.checkEqual(A.b, 1, "-B advice overcalled");
- }
- }
-
- class A0 { }
-
- class A1 extends A0 { }
-
- class B {}
-
- aspect A {
- static int a0, a1, b;
- /*static*/ before(): execution(A0+.new()) { //added +
- a0++;
- }
-
- /*static*/ before(): execution(A1.new()) {
- a1++;
- }
-
- /*static*/ before(): execution(B.new()) {
- b++;
- }
- }
|