mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-14 02:10:40 +02:00
58 lines
1.3 KiB
Java
58 lines
1.3 KiB
Java
import org.aspectj.testing.Tester;
|
|
|
|
/**
|
|
* PR#527 bug in 1.0beta1 but not HEAD as of 9/24/01
|
|
* @testcase compile error using pcd if() with advice on introduced methods.
|
|
*/
|
|
public class PR527 {
|
|
public static void main(String[] args) {
|
|
new C().run();
|
|
Tester.checkAllEvents();
|
|
}
|
|
static {
|
|
Tester.expectEvent("run");
|
|
Tester.expectEvent("test");
|
|
// Tester.expectEvent("trigger"); replaced in around
|
|
Tester.expectEvent("after");
|
|
Tester.expectEvent("callback");
|
|
Tester.expectEvent("around");
|
|
}
|
|
}
|
|
class C {
|
|
public void run() {
|
|
Tester.event("run");
|
|
}
|
|
}
|
|
|
|
aspect A {
|
|
interface I {
|
|
}
|
|
|
|
public boolean I.test() {
|
|
Tester.event("test");
|
|
return true;
|
|
}
|
|
|
|
public void I.trigger() {
|
|
Tester.event("trigger"); // should not run
|
|
}
|
|
|
|
public void I.callback() {
|
|
Tester.event("callback");
|
|
}
|
|
|
|
declare parents: C implements I;
|
|
|
|
after (C c) : target(c) && execution(public void C.run()) {
|
|
Tester.event("after");
|
|
((I) c).trigger();
|
|
}
|
|
void around(I i)
|
|
: target(i)
|
|
&& execution(public void I.trigger())
|
|
&& if(i.test()) {
|
|
Tester.event("around");
|
|
i.callback();
|
|
}
|
|
}
|