org.aspectj/tests/new/DeclarationCollisionCE.java

32 lines
982 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 { declare precedence: AA, 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 20 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 27 collision with A declaration
return "[B] C.title()" ;
}
}