org.aspectj/tests/bugs/TjpMistake.java

30 lines
745 B
Java
Raw Normal View History

/** @testcase PR#75129 NPE on thisJoinPoint mistake */
public class TjpMistake {
public static void main(String[] a) {
new C().go();
new D().go();
new E().go();
}
}
interface I { void go();}
class C {}
class D {
public void go() { System.out.println("D.go() in " + this); }
}
class E extends D {
}
aspect A {
declare parents: (C || D) implements I;
public void I.go() { System.out.println("I.go() in " + this); }
before() : execution(* I.*(..)) {
System.out.println(
// mistake caused compiler crash rather than error
thisJoinPoint.getSignature.toLongString() // CE 22
// correct
//thisJoinPointStaticPart.getSignature().toLongString()
+ " "
+ thisJoinPoint.getSignature().getDeclaringType()
+ " "
+ this); }
}