aboutsummaryrefslogtreecommitdiffstats
path: root/tests/errors/AspectInheritance2.java
blob: eb443ff2d18c6d5fbe0618bd6d5911c64c945045 (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
public class AspectInheritance2 {
    public static void main(String[] args) {
    }
}


abstract aspect Base {
    abstract pointcut targets(int i, C c);

    after(int i, C c): targets(i, c) {
	//
    }
}

aspect FullConcrete extends Base {
    pointcut targets(int i, SubC subc):      //ERROR param types must match exactly
        call(void SubC.m(double)) && target(subc) && args(i);
}

aspect ForgetfulConcrete extends Base { //ERROR must concretize abstracts
}

aspect ExplictAbstractConcrete extends Base {
    pointcut targets(int i, C c);

    abstract pointcut newTargets();  //ERROR no abstracts allowed in concrete
}

aspect PrivateConcrete extends Base {
    private pointcut targets(int i, C c):  //ERROR can't reduce visibility of decs
        call(void C.m(int)) && target(c) && args(i);
}


class C {
    public void m(int i) { }
}

class SubC extends C {}