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.

PCDeclarationArgsCE.java 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import java.util.Observer;
  2. import java.util.Observable;
  3. /** @testcase PR#740 pointcut references with incorrect args should prompt compiler errors */
  4. aspect A {
  5. pointcut none() : call(static void main(String[]));
  6. pointcut one(Runnable r) : target(r) && call(void run());
  7. pointcut two(Observer seer, Observable seen) :
  8. target(seer)
  9. && args(seen, Object)
  10. && execution(void update(Observable, Object));
  11. pointcut three(Observer seer, Observable seen, Object arg) :
  12. target(seer)
  13. && args(seen, arg)
  14. && execution(void update(Observable, Object));
  15. // cases should not have errors
  16. pointcut none0type() : none();
  17. pointcut one1type() : one(Runnable);
  18. pointcut two2type() : two(Observer, Observable);
  19. pointcut three3type() : three(Observer, Observable, Object);
  20. pointcut one1arg(Runnable r) : one(r);
  21. pointcut two2arg(Observer seer, Observable seen) : two(seer, seen);
  22. pointcut three3arg(Observer seer, Observable seen, Object o) :
  23. two(seer, seen, o);
  24. // cases should prompt CE
  25. pointcut none1type() : none(Object); // CE 29
  26. pointcut none1name(Object o) : none(o); // CE 30
  27. pointcut none2type() : none(Object, Object); // CE 31
  28. pointcut none2name(Object o, Object p) : none(o,p); // CE 32
  29. pointcut one0() : one(); // CE 33
  30. pointcut one2type() : one(Runnable, Object); // CE 34
  31. pointcut one2name(Runnable o, Object p) : one(o,p); // CE 35
  32. pointcut two0() : two(Object); // CE 37
  33. pointcut two1type() : two(Object); // CE 38
  34. pointcut two1name(Object o) : two(o); // CE 39
  35. pointcut two3type() : two(Observer, Observable, Object); // CE 40
  36. pointcut two3name(Observer seer, Observable seen, Object object) :
  37. two(seer, seen, object); // CE 42
  38. pointcut three0() : three(Object); // CE 44
  39. pointcut three1type() : three(Object); // CE 45
  40. pointcut three1name(Object o) : three(o); // CE 46
  41. pointcut three2type() : three(Observer, Observable); // CE 47
  42. pointcut three2name(Observer seer, Observable seen) :
  43. three(seer, seen); // CE 49
  44. pointcut three4type() : three(Observer, Observable, Object, Object); // CE 50
  45. pointcut three4name(Observer seer, Observable seen,
  46. Object object, Object two) :
  47. three(seer, seen, object, two); // CE 53
  48. }