12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
-
- import org.aspectj.testing.Tester;
-
-
-
- /** PR#568 cyclic pointcut definitions */
- public class CyclicPointcuts {
-
- static aspect A {
- /* @testcase pointcut depends on itself */
- pointcut p(): p(); // CE 11 recursion not permitted
-
- /* @testcase two pointcuts depends on each other */
- pointcut p1(): p2(); // CE 14 recursion not permitted
- pointcut p2(): p1(); // line 15
-
- /* @testcase three pointcuts depends on each other */
- pointcut pa(): pb(); // CE 18 recursion not permitted
- pointcut pb(): pc(); // line 19
- pointcut pc(): pa(); // line 20
- }
- }
-
- /** @testcase three pointcuts in different classes in a cycle */
- aspect One {
- pointcut p() : Two.p(); // line 26
- }
- aspect Two {
- pointcut p() : Three.p(); // line 29
- }
- aspect Three {
- pointcut p() : One.p(); // CE 32 recursion not permitted
- }
-
- /** @testcase three pointcuts in different classes (sub, super, other) in a cycle */
- abstract aspect Base {
- pointcut base() : A.p(); // line 37
- }
- aspect A {
- pointcut p() : Derived.p(); // line 40
- }
- aspect Derived extends Base {
- pointcut p() : base(); // CE 43 recursion not permitted
- }
-
- aspect Driver {
- // error test, but...
- static {
- Tester.expectEvent("Derived.p()");
- Tester.expectEvent("Three.p()");
- Tester.expectEvent("CyclicPointcuts.A.p()");
- Tester.expectEvent("CyclicPointcuts.A.p1()");
- Tester.expectEvent("CyclicPointcuts.A.()");
- }
- before() : Derived.p() {
- Tester.event("Derived.p()");
- }
- before() : Three.p() {
- Tester.event("Three.p()");
- }
- before() : CyclicPointcuts.A.p() {
- Tester.event("CyclicPointcuts.A.p()");
- }
- before() : CyclicPointcuts.A.p1() {
- Tester.event("CyclicPointcuts.A.p1()");
- }
- before() : CyclicPointcuts.A.pa() {
- Tester.event("CyclicPointcuts.A.pa()");
- }
-
- }
-
|