12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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);
- }
- }
|