mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-09-13 15:45:38 +02:00
32 lines
967 B
Java
32 lines
967 B
Java
|
|
||
|
/** @testcase expect CE for declaration collision between subaspects instead of domination order */
|
||
|
public class DeclarationCollisionCE {
|
||
|
public static void main (String[] args) {
|
||
|
C s = new C();
|
||
|
System.err.println("title: " + s.title());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class C {}
|
||
|
|
||
|
// bug: dominates clause prevents collision error
|
||
|
abstract aspect AA dominates B {
|
||
|
// same result if this line is uncommented
|
||
|
//public String C.title() { return "[AA] C.title()"; }
|
||
|
}
|
||
|
|
||
|
aspect A extends AA { // implicitly dominates AA
|
||
|
// dominates AA's declaration, overriding Super.title
|
||
|
public String C.title() { // CE 21 collision with B declaration
|
||
|
return "[A] C.title()" ;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
aspect B extends AA { // explicitly dominated by AA ?? --> and hence by A??
|
||
|
// B fails to dominate AA's declaration, overriding Super.title
|
||
|
public String C.title() { // CE 28 collision with A declaration
|
||
|
return "[B] C.title()" ;
|
||
|
}
|
||
|
}
|
||
|
|