You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PR527.java 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import org.aspectj.testing.Tester;
  2. /**
  3. * PR#527 bug in 1.0beta1 but not HEAD as of 9/24/01
  4. * @testcase compile error using pcd if() with advice on introduced methods.
  5. */
  6. public class PR527 {
  7. public static void main(String[] args) {
  8. new C().run();
  9. Tester.checkAllEvents();
  10. }
  11. static {
  12. Tester.expectEvent("run");
  13. Tester.expectEvent("test");
  14. // Tester.expectEvent("trigger"); replaced in around
  15. Tester.expectEvent("after");
  16. Tester.expectEvent("callback");
  17. Tester.expectEvent("around");
  18. }
  19. }
  20. class C {
  21. public void run() {
  22. Tester.event("run");
  23. }
  24. }
  25. aspect A {
  26. interface I {
  27. }
  28. public boolean I.test() {
  29. Tester.event("test");
  30. return true;
  31. }
  32. public void I.trigger() {
  33. Tester.event("trigger"); // should not run
  34. }
  35. public void I.callback() {
  36. Tester.event("callback");
  37. }
  38. declare parents: C implements I;
  39. after (C c) : target(c) && execution(public void C.run()) {
  40. Tester.event("after");
  41. ((I) c).trigger();
  42. }
  43. void around(I i)
  44. : target(i)
  45. && execution(public void I.trigger())
  46. && if(i.test()) {
  47. Tester.event("around");
  48. i.callback();
  49. }
  50. }