diff options
author | acolyer <acolyer> | 2004-12-16 13:08:07 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2004-12-16 13:08:07 +0000 |
commit | d2ef5057552185144c54afa37a7f7de81664ea9c (patch) | |
tree | a6c03f61b6b98a1ffb23d855bc89dada210e73c9 /tests/bugs/AmbiguousBindings.aj | |
parent | 2f85beef220b0b67fefb587b9045d80fd1356da1 (diff) | |
download | aspectj-d2ef5057552185144c54afa37a7f7de81664ea9c.tar.gz aspectj-d2ef5057552185144c54afa37a7f7de81664ea9c.zip |
more ambiguous bindings testing
Diffstat (limited to 'tests/bugs/AmbiguousBindings.aj')
-rw-r--r-- | tests/bugs/AmbiguousBindings.aj | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/bugs/AmbiguousBindings.aj b/tests/bugs/AmbiguousBindings.aj new file mode 100644 index 000000000..ade1f3113 --- /dev/null +++ b/tests/bugs/AmbiguousBindings.aj @@ -0,0 +1,60 @@ +// pushes the limits of what ajc will accept as an unambiguous binding...
+
+aspect AmbiguousBindings {
+
+ pointcut p1(Foo foo) : (call(* *(..)) && this(foo)) || (execution(* *(..)) && args(foo));
+
+ pointcut p2(Foo foo) : (call(* m(..)) && this(foo)) || (call(* n(..)) && args(foo));
+
+ pointcut p3(Foo foo) : (execution(* *(int,int)) && this(foo)) || (execution(* *(int)) && this(foo));
+
+ pointcut p4(Foo foo) : (get(int a) && this(foo)) || (get(int b) && target(foo));
+
+ pointcut p5(int x) : (set(int a) && args(x)) || (set(int b) && args(x));
+
+ pointcut p6(Foo foo) : (within(Foo) && this(foo)) || (within(AmbiguousBindings) && args(foo));
+
+ pointcut q1(Foo foo) : (call(* m(..)) && this(foo)) || (call(* m*(..)) && args(foo));
+
+ pointcut q2(Foo foo) : (execution(* *(int,int)) && this(foo)) || (execution(* *(int,*)) && args(foo));
+
+ pointcut q3(Foo foo) : (get(int a) && this(foo)) || (get(int a) && target(foo));
+
+ pointcut q4(int x) : (set(int a) && args(x)) || (set(* *) && this(x));
+
+ pointcut q5(Foo foo) : (within(Foo) && this(foo)) || (within(F*) && args(foo));
+
+ // these should be good
+ before(Foo foo) : p1(foo) {}
+ before(Foo foo) : p2(foo) {}
+ before(Foo foo) : p3(foo) {}
+ before(Foo foo) : p4(foo) {}
+ before(int z) : p5(z) {}
+ before(Foo foo) : p6(foo) {}
+
+ // these are all ambiguous
+ before(Foo foo) : q1(foo) {}
+ before(Foo foo) : q2(foo) {}
+ before(Foo foo) : q3(foo) {}
+ before(int x) : q4(x) {}
+ before(Foo foo) : q5(foo) {}
+
+}
+
+
+class Foo {
+
+ int a;
+ int b;
+
+ public void m(int x, int y) {
+ a = y;
+ n(x);
+ }
+
+ public void n(int x) {
+ b = x;
+ a = a * 2;
+ }
+
+}
\ No newline at end of file |