org.aspectj/tests/new/MatchingArgumentsInCflow.java
2002-12-16 18:51:06 +00:00

53 lines
1.2 KiB
Java

import org.aspectj.testing.*;
import java.util.*;
/**
* PR#479
* Variant of Hunter Kelly's bug report PR#479.
* Hunter tried to bind two arguments using withincode(..)
* and call(..), but received an error. This does it the right
* way and is working as of 1.0alpha1.
*
* @since 2001.08.06
* @author Jeff Palm
* @report 479
*/
public class MatchingArgumentsInCflow {
public static void main(String[] args) {
new MethodParam().someMethod("arg");
}
}
class MethodParam
{
public void someMethod(String arg)
{
List list = new LinkedList();
list.add(new String(arg+":"+arg));
}
}
aspect MethodParamAspect
{
/*
* Match the top of the call and bind argument
*/
pointcut flow(String s):
cflow(execution(void someMethod(String)) && args(s));
/*
* Bind o to the argument to the list
*/
pointcut some(Object o):
call(* List.add(Object)) && args(o);
/*
* Make sure these arguments are different
* and assert the values.
*/
before (String s, Object o): flow(s) && some(o) {
Tester.checkEqual(s, "arg");
Tester.checkEqual(o, "arg:arg");
Tester.checkNotEqual(s, o);
}
}