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 {}
|