summaryrefslogtreecommitdiffstats
path: root/tests/new/AfterReturningParam.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/new/AfterReturningParam.java')
-rw-r--r--tests/new/AfterReturningParam.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/new/AfterReturningParam.java b/tests/new/AfterReturningParam.java
new file mode 100644
index 000000000..4010bf058
--- /dev/null
+++ b/tests/new/AfterReturningParam.java
@@ -0,0 +1,68 @@
+import org.aspectj.testing.Tester;
+
+public class AfterReturningParam {
+ public static void main(String[] args) {
+
+ AfterReturningParam p = new AfterReturningParam();
+ Tester.checkAndClearEvents(new String[] { "constr exec as Object null" });
+
+ p.mInt();
+ Tester.checkAndClearEvents(new String[] { "int as Object 2" });
+
+ p.mObject();
+ Tester.checkAndClearEvents(new String[] { "Object as Object ning",
+ "Object (that is String) as String ning" });
+
+ p.mVoid();
+ Tester.checkAndClearEvents(new String[] { "void as Object null" });
+
+ }
+
+ public int mInt() { return 2; }
+ public Object mObject() { return "ning"; }
+ public void mVoid() { return; }
+
+ AfterReturningParam() {
+ }
+}
+
+
+aspect A {
+ private void callEvent(String s, Object o) {
+ Tester.event(s + " " + o);
+ }
+
+ after() returning (AfterReturningParam o) : execution(AfterReturningParam.new()) { // CW 35 in 1.0.4, no match
+ callEvent("constr exec as constd object", o);
+ }
+ after() returning (Object o) : execution(AfterReturningParam.new()) { // CW 38 in 1.0.4, does match
+ callEvent("constr exec as Object", o);
+ }
+ after() returning (String o) : execution(AfterReturningParam.new()) { // CW 41 in 1.0.4, no match
+ callEvent("constr exec as String", o);
+ }
+
+ after() returning (Object o) : execution(int AfterReturningParam.mInt()) { // match
+ callEvent("int as Object", o);
+ }
+ after() returning (String o) : execution(int AfterReturningParam.mInt()) { // no match
+ callEvent("int as String", o);
+ }
+ after() returning (Integer o) : execution(int AfterReturningParam.mInt()) { // no match
+ callEvent("int as Integer", o);
+ }
+
+ after() returning (Object o) : execution(Object AfterReturningParam.mObject()) { // match
+ callEvent("Object as Object", o);
+ }
+ after() returning (String o) : execution(Object AfterReturningParam.mObject()) { // match (interesting, matching by instanceof)
+ callEvent("Object (that is String) as String", o);
+ }
+
+ after() returning (Object o) : execution(void AfterReturningParam.mVoid()) { // match
+ callEvent("void as Object", o);
+ }
+ after() returning (String o) : execution(void AfterReturningParam.mVoid()) { // CW 65 warning in 1.0.4 no match
+ callEvent("void as String", o);
+ }
+}