diff options
-rw-r--r-- | tests/ajcTestsFailing.xml | 8 | ||||
-rw-r--r-- | tests/bugs/PointcutLibraryTest.java | 50 |
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); + } +} |