Browse Source

@testcase PR#40876 subtype-qualified pointcut reference

(ClassFormatError)
tags/V1_1_1
wisberg 21 years ago
parent
commit
d5a63db3a0
2 changed files with 58 additions and 0 deletions
  1. 8
    0
      tests/ajcTestsFailing.xml
  2. 50
    0
      tests/bugs/PointcutLibraryTest.java

+ 8
- 0
tests/ajcTestsFailing.xml View File

@@ -4,6 +4,13 @@
<!-- 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?"
@@ -38,4 +45,5 @@
<message kind="warning" line="38" text="call ICanGetSomething.getSomething"/>
</compile>
</ajc-test>

</suite>

+ 50
- 0
tests/bugs/PointcutLibraryTest.java View File

@@ -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);
}
}

Loading…
Cancel
Save