<!-- contains valid tests that the compiler has never passed -->
<suite>
+ <ajc-test dir="bugs"
+ pr="40876"
+ title="subtype-qualified pointcut reference">
+ <compile files="PointcutLibraryTest.java"/>
+ <run class="PointcutLibraryTest"/>
+ </ajc-test>
+
<ajc-test dir="bugs"
pr="40858"
comment="shouldn't super ref be permitted?"
<message kind="warning" line="38" text="call ICanGetSomething.getSomething"/>
</compile>
</ajc-test>
+
</suite>
--- /dev/null
+/*
+ * This test case produces a ClassFormatError under 1.1.0, but
+ * the code is not set up to run/test correctly
+ * after the bug is fixed.
+ */
+
+/** @testcase PR#40876 subtype-qualified pointcut reference */
+public class PointcutLibraryTest {
+ public static void main(String[] a) {
+ new Test().run();
+ }
+}
+
+class Test {
+ public void run(){ prun(); }
+ private void prun() {
+ System.out.println("Test.prun()");
+ }
+}
+
+/** private default implementation of library */
+class PrivatePointcutLibrary {
+ pointcut adviceCflow() : !cflow(adviceexecution());
+ pointcut publicCalls() : call(public * *(..))
+ && !adviceCflow();
+}
+
+/** public interface for library */
+class PointcutLibrary extends PrivatePointcutLibrary {
+}
+
+// ---- different clients of the library
+
+/** use library by inheriting scope in class */
+class CPL extends PointcutLibrary {
+ static aspect A {
+ before() : publicCalls() {
+ System.out.println("CPL: "
+ + thisJoinPointStaticPart);
+ }
+ }
+}
+
+/** client by external reference to CPL */
+aspect ExternalClientOfCPL {
+ before() : CPL.publicCalls() { // remove this to avoid bug?
+ System.out.println("XDP: "
+ + thisJoinPointStaticPart);
+ }
+}