--- /dev/null
+public class Test {
+ public static void main (String[] args) {}
+}
--- /dev/null
+public abstract aspect TestAspect {
+
+ protected abstract pointcut scope ();
+}
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+
@Aspect
public class TestEmptyPointcutAtAspect {
- @Pointcut("")
- protected void scope () {}
+ @Pointcut("")
+ protected void scope () {}
+
+ @Pointcut
+ protected void scope2() {}
}
--- /dev/null
+import org.aspectj.lang.annotation.*;
+
+@Aspect
+public class TestEmptyPointcutAtAspect2 {
+
+ @Pointcut("")
+ protected void scope () {}
+
+ @Before("within(*) && scope()")
+ public void m() {
+ System.err.println("Here!");
+ }
+}
+
+class A {
+
+ String s;
+ int i;
+
+ public static void main(String[] args) {
+ new A().foo();
+ }
+
+ public void foo() {
+ i=4;
+ s="hello";
+ }
+}
\ No newline at end of file
--- /dev/null
+<aspectj>
+ <aspects>
+<!--
+ <concrete-aspect name="TraceHelloWorld" extends="org.aspectj.lib.tracing.SimpleTracing">
+ <pointcut name="tracingScope" expression="within(*)"/>
+ </concrete-aspect>
+-->
+ <concrete-aspect name="TestSubAtAspect" extends="TestAspect">
+ <pointcut name="scope" expression=""/>
+ </concrete-aspect>
+ </aspects>
+
+ <weaver options="-verbose"/>
+</aspectj>
--- /dev/null
+
+
+public abstract aspect AbstractMethods {
+
+ protected abstract pointcut tracingScope ();
+
+ before () : tracingScope () {
+ test();
+ }
+
+ protected abstract void test ();
+// protected void test () {}
+}
--- /dev/null
+import org.aspectj.lang.annotation.Aspect;
+
+@Aspect
+public class AtAspectTestConcreteMethods extends ConcreteMethods {
+
+}
--- /dev/null
+
+
+public abstract aspect ConcreteMethods extends AbstractMethods {
+
+ protected void test () {}
+
+}
--- /dev/null
+public class HelloWorld {
+
+ public static void main(String[] args) {
+ new HelloWorld().println();
+ }
+
+ public void println() {
+ System.out.print("Hello World!");
+ }
+
+}
--- /dev/null
+<aspectj>
+ <aspects>
+ <concrete-aspect name="TraceHelloWorld" extends="ConcreteMethods">
+ <pointcut name="tracingScope" expression="within(*)"/>
+ </concrete-aspect>
+ </aspects>
+
+ <weaver options="-verbose"/>
+</aspectj>
+
--- /dev/null
+public class ExposedType {
+ public static void main(String[] args) {
+ new ExposedTypeOne().foo();
+ new ExposedTypeTwo().foo();
+ new ExposedTypeThree().foo();
+ }
+}
+
+class ExposedTypeOne {
+ public void foo() { }
+}
+
+class ExposedTypeTwo {
+ public void foo() { }
+}
+
+class ExposedTypeThree {
+ public void foo() { }
+}
+
+aspect X pertypewithin(Exposed*) {
+ before(): execution(* foo(..)) {
+ System.err.println("here I am "+thisJoinPoint+": for class "+getWithinType());
+ }
+}
\ No newline at end of file
<ajc-test dir="bugs151/pr125295" title="new IProgramElement methods">
<compile files="pkg/C.java,pkg/A.aj" options="-emacssym"/>
</ajc-test>
-
- <ajc-test dir="bugs151/pr125475" title="empty pointcut in atAJ">
+
+ <ajc-test dir="bugs151/pr125475" title="define empty pointcut using an annotation">
<compile files="TestEmptyPointcutAtAspect.java" options="-1.5"/>
</ajc-test>
+
+ <ajc-test dir="bugs151/pr125475" title="define empty pointcut using an annotation - 2">
+ <compile files="TestEmptyPointcutAtAspect2.java" options="-1.5 -showWeaveInfo">
+ <message kind="warning" line="10" text="advice defined in TestEmptyPointcutAtAspect2 has not been applied [Xlint:adviceDidNotMatch]"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs151/pr125475" title="define empty pointcut using aop.xml">
+ <compile files="Test.java TestAspect.aj"/>
+ <run class="Test" ltw="aop.xml"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs151/pr125480" title="aop.xml aspect inherits abstract method that has concrete implementation in parent">
+ <compile files="HelloWorld.java"/>
+ <compile files="AbstractMethods.aj, ConcreteMethods.aj"/>
+ <run class="HelloWorld" ltw="aop-tracing.xml"/>
+ </ajc-test>
+
+
+ <!-- New features down here... when they arent big enough to have their own test file -->
+
+ <ajc-test dir="features151/ptw" title="exposing withintype">
+ <compile files="ExposedType.java" options="-1.5"/>
+ <run class="ExposedType">
+ <stderr>
+ <line text="here I am execution(void ExposedTypeOne.foo()): for class ExposedTypeOne"/>
+ <line text="here I am execution(void ExposedTypeTwo.foo()): for class ExposedTypeTwo"/>
+ <line text="here I am execution(void ExposedTypeThree.foo()): for class ExposedTypeThree"/>
+ </stderr>
+ </run>
+ </ajc-test>
</suite>
\ No newline at end of file