mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-26 17:58:43 +02:00
49 lines
2.0 KiB
Java
49 lines
2.0 KiB
Java
|
|
class Target {
|
|
public void resize(int i) {}
|
|
}
|
|
|
|
/** @testcase invalid number and type of proceed arguments */
|
|
aspect A {
|
|
void around(Target buffer)
|
|
: call(void Target.resize(..)) && target(buffer) {
|
|
proceed(); // expect CE here
|
|
}
|
|
void around(int i, Target buffer)
|
|
: call(void Target.resize(..)) && args(i) && target(buffer) {
|
|
/** @testcase invalid proceed args - none, 2 expected */
|
|
proceed(); // expect CE here
|
|
/** @testcase invalid proceed args - 1, 2 expected */
|
|
proceed(i); // expect CE here
|
|
// coercion is passing
|
|
/** @testcase invalid proceed args - wrong type 1, 2 expected */
|
|
proceed(buffer); // expect CE here
|
|
/** @testcase invalid proceed args - wrong type 2, 2 expected */
|
|
proceed(buffer, i); // expect CE here
|
|
}
|
|
void around(int i)
|
|
: call(void Target.resize(..)) && args(i) {
|
|
/** @testcase invalid proceed args - wrong type */
|
|
proceed(new Integer(0)); // expect CE here
|
|
/** @testcase invalid proceed args - wrong type 2, 1 expected */
|
|
proceed(new Integer(0), 0); // expect CE here
|
|
/** @testcase invalid proceed args - wrong type 2, 1 expected */
|
|
proceed(0, new Integer(0)); // expect CE here
|
|
}
|
|
|
|
void around(int i, Target buffer)
|
|
: call(void Target.resize(..)) && args(i) && target(buffer) {
|
|
/** @testcase invalid proceed args - float -> int */
|
|
proceed(3.1, buffer); // expect CE here
|
|
/** @testcase invalid proceed args - String -> int */
|
|
proceed("1", buffer); // expect CE here
|
|
proceed('a', buffer); // char -> int is legal
|
|
// coercion is passing
|
|
/** @testcase invalid proceed args - Object -> Target */
|
|
proceed(i, (Object)null); // expect CE here
|
|
proceed(i, null); //null -> Target is legal
|
|
/** @testcase invalid proceed args - wrong type 3-> Target */
|
|
proceed(i, 3); // expect CE here
|
|
}
|
|
}
|