aboutsummaryrefslogtreecommitdiffstats
path: root/tests/new/AfterReturningParam.java
blob: dd4e1fc3791f061858a15b85130baf7d60c863d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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" });
 //        see pr 103157 for reason why this no longer matches

        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
    	                                                                       // in 1.5 does not match - no return value for this jp
        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);
    }
}