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.

InvalidProceedArgsCE.java 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. class Target {
  2. public void resize(int i) {}
  3. }
  4. /** @testcase invalid number and type of proceed arguments */
  5. aspect A {
  6. void around(Target buffer)
  7. : call(void Target.resize(..)) && target(buffer) {
  8. proceed(); // expect CE here
  9. }
  10. void around(int i, Target buffer)
  11. : call(void Target.resize(..)) && args(i) && target(buffer) {
  12. /** @testcase invalid proceed args - none, 2 expected */
  13. proceed(); // expect CE here
  14. /** @testcase invalid proceed args - 1, 2 expected */
  15. proceed(i); // expect CE here
  16. // coercion is passing
  17. /** @testcase invalid proceed args - wrong type 1, 2 expected */
  18. proceed(buffer); // expect CE here
  19. /** @testcase invalid proceed args - wrong type 2, 2 expected */
  20. proceed(buffer, i); // expect CE here
  21. }
  22. void around(int i)
  23. : call(void Target.resize(..)) && args(i) {
  24. /** @testcase invalid proceed args - wrong type */
  25. proceed(new Integer(0)); // expect CE here
  26. /** @testcase invalid proceed args - wrong type 2, 1 expected */
  27. proceed(new Integer(0), 0); // expect CE here
  28. /** @testcase invalid proceed args - wrong type 2, 1 expected */
  29. proceed(0, new Integer(0)); // expect CE here
  30. }
  31. void around(int i, Target buffer)
  32. : call(void Target.resize(..)) && args(i) && target(buffer) {
  33. /** @testcase invalid proceed args - float -> int */
  34. proceed(3.1, buffer); // expect CE here
  35. /** @testcase invalid proceed args - String -> int */
  36. proceed("1", buffer); // expect CE here
  37. proceed('a', buffer); // char -> int is legal
  38. // coercion is passing
  39. /** @testcase invalid proceed args - Object -> Target */
  40. proceed(i, (Object)null); // expect CE here
  41. proceed(i, null); //null -> Target is legal
  42. /** @testcase invalid proceed args - wrong type 3-> Target */
  43. proceed(i, 3); // expect CE here
  44. }
  45. }