spegling av
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-09-03 17:56:34 +02:00
53 rader
1.2 KiB
Java
53 rader
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);
|
|
}
|
|
}
|