aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/ajcTestsFailing.xml8
-rw-r--r--tests/bugs/PointcutLibraryTest.java50
2 files changed, 58 insertions, 0 deletions
diff --git a/tests/ajcTestsFailing.xml b/tests/ajcTestsFailing.xml
index 2fb358054..0f5af6454 100644
--- a/tests/ajcTestsFailing.xml
+++ b/tests/ajcTestsFailing.xml
@@ -5,6 +5,13 @@
<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?"
title="weaver trace on mis-qualified pointcut reference">
@@ -38,4 +45,5 @@
<message kind="warning" line="38" text="call ICanGetSomething.getSomething"/>
</compile>
</ajc-test>
+
</suite>
diff --git a/tests/bugs/PointcutLibraryTest.java b/tests/bugs/PointcutLibraryTest.java
new file mode 100644
index 000000000..17ce36b52
--- /dev/null
+++ b/tests/bugs/PointcutLibraryTest.java
@@ -0,0 +1,50 @@
+/*
+ * 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);
+ }
+}