--- /dev/null
+import org.aspectj.lang.*;
+
+public aspect PerCflow percflow(execution(* m(..))) {
+
+ before(): execution(* Foo.*(..)) {}
+
+ public static void main(String []argv) {
+ print("before");
+ new Foo().m();
+ print("after");
+ }
+
+ public static void print(String prefix) {
+ System.err.println(prefix);
+ boolean b1 = Aspects14.hasAspect(PerCflow.class);
+ boolean b2 = PerCflow.hasAspect();
+ Object o1 = (b1?Aspects14.aspectOf(PerCflow.class):null);
+ Object o2 = (b2?PerCflow.aspectOf():null);
+ System.err.println("hasAspect? "+b1+" : "+b2);
+ System.err.println("aspectOf? "+o1+" : "+o2);
+ }
+
+ public String toString() { return "PerCflowInstance"; }
+}
+
+class Foo {
+ public void m() { PerCflow.print("during");}
+}
--- /dev/null
+import org.aspectj.lang.*;
+
+public aspect PerThis perthis(execution(* m(..))) {
+
+ before(): execution(* Foo.*(..)) {}
+
+ public static void main(String []argv) {
+ print("before");
+ new Foo().m();
+ print("after");
+ }
+
+ public static void print(String prefix) {
+ System.err.println(prefix);
+ boolean b1 = Aspects14.hasAspect(PerThis.class,null);
+ boolean b2 = PerThis.hasAspect(null);
+ Object o1 = (b1?Aspects14.aspectOf(PerThis.class,null):null);
+ Object o2 = (b2?PerThis.aspectOf(null):null);
+ System.err.println("hasAspect? "+b1+" : "+b2);
+ System.err.println("aspectOf? "+o1+" : "+o2);
+ }
+
+ public String toString() { return "PerThisInstance"; }
+}
+
+class Foo {
+ public void m() { print("during");}
+ public void print(String prefix) {
+ System.err.println(prefix);
+ boolean b1 = Aspects14.hasAspect(PerThis.class,this);
+ boolean b2 = PerThis.hasAspect(this);
+ Object o1 = (b1?Aspects14.aspectOf(PerThis.class,this):null);
+ Object o2 = (b2?PerThis.aspectOf(this):null);
+ System.err.println("hasAspect? "+b1+" : "+b2);
+ System.err.println("aspectOf? "+o1+" : "+o2);
+ }
+}
--- /dev/null
+import org.aspectj.lang.*;
+
+public aspect PerTypeWithin pertypewithin(Foo) {
+
+ before(): execution(* Foo.*(..)) {}
+
+ public static void main(String []argv) {
+ print("before");
+ new Foo().m();
+ print("after");
+ }
+
+ public static void print(String prefix) {
+ System.err.println(prefix);
+ boolean b1 = Aspects14.hasAspect(PerTypeWithin.class,Goo.class);
+ boolean b2 = PerTypeWithin.hasAspect(Goo.class);
+ Object o1 = (b1?Aspects14.aspectOf(PerTypeWithin.class,Goo.class):null);
+ Object o2 = (b2?PerTypeWithin.aspectOf(Goo.class):null);
+ System.err.println("hasAspect? "+b1+" : "+b2);
+ System.err.println("aspectOf? "+o1+" : "+o2);
+ }
+
+ public String toString() { return "PerTypeWithinInstance"; }
+}
+
+class Goo {
+
+}
+
+class Foo {
+ public void m() { print("during");}
+ public void print(String prefix) {
+ System.err.println(prefix);
+ boolean b1 = Aspects14.hasAspect(PerTypeWithin.class,this.getClass());
+ boolean b2 = PerTypeWithin.hasAspect(this.getClass());
+ Object o1 = (b1?Aspects14.aspectOf(PerTypeWithin.class,this.getClass()):null);
+ Object o2 = (b2?PerTypeWithin.aspectOf(this.getClass()):null);
+ System.err.println("hasAspect? "+b1+" : "+b2);
+ System.err.println("aspectOf? "+o1+" : "+o2);
+ }
+}
--- /dev/null
+import org.aspectj.lang.*;
+
+public aspect Singleton {
+
+ before(): execution(* Foo.*(..)) {}
+
+ public static void main(String []argv) {
+ print();
+ new Foo().m();
+ print();
+ }
+
+ public static void print() {
+ boolean b1 = Aspects14.hasAspect(Singleton.class);
+ boolean b2 = Singleton.hasAspect();
+ Object o1 = (b1?Aspects14.aspectOf(Singleton.class):null);
+ Object o2 = (b2?Singleton.aspectOf():null);
+ System.err.println("hasAspect? "+b1+" : "+b2);
+ System.err.println("aspectOf? "+o1+" : "+o2);
+ }
+
+ public String toString() { return "SingletonInstance"; }
+}
+
+class Foo {
+ public void m() { }
+}
</stderr>
</run>
</ajc-test>
+
+ <ajc-test dir="bugs152/pr122253" title="aspects14 - persingleton">
+ <compile files="Singleton.java"/>
+ <run class="Singleton">
+ <stderr>
+ <line text="hasAspect? true : true"/>
+ <line text="aspectOf? SingletonInstance : SingletonInstance"/>
+ <line text="hasAspect? true : true"/>
+ <line text="aspectOf? SingletonInstance : SingletonInstance"/>
+ </stderr>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="bugs152/pr122253" title="aspects14 - percflow">
+ <compile files="PerCflow.java"/>
+ <run class="PerCflow">
+ <stderr>
+ <line text="before"/>
+ <line text="hasAspect? false : false"/>
+ <line text="aspectOf? null : null"/>
+ <line text="during"/>
+ <line text="hasAspect? true : true"/>
+ <line text="aspectOf? PerCflowInstance : PerCflowInstance"/>
+ <line text="after"/>
+ <line text="hasAspect? false : false"/>
+ <line text="aspectOf? null : null"/>
+ </stderr>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="bugs152/pr122253" title="aspects14 - perthis">
+ <compile files="PerThis.java"/>
+ <run class="PerThis">
+ <stderr>
+ <line text="before"/>
+ <line text="hasAspect? false : false"/>
+ <line text="aspectOf? null : null"/>
+ <line text="during"/>
+ <line text="hasAspect? true : true"/>
+ <line text="aspectOf? PerThisInstance : PerThisInstance"/>
+ <line text="after"/>
+ <line text="hasAspect? false : false"/>
+ <line text="aspectOf? null : null"/>
+ </stderr>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="bugs152/pr122253" title="aspects14 - pertypewithin">
+ <compile files="PerTypeWithin.java"/>
+ <run class="PerTypeWithin">
+ <stderr>
+ <line text="before"/>
+ <line text="hasAspect? false : false"/>
+ <line text="aspectOf? null : null"/>
+ <line text="during"/>
+ <line text="hasAspect? true : true"/>
+ <line text="aspectOf? PerTypeWithinInstance : PerTypeWithinInstance"/>
+ <line text="after"/>
+ <line text="hasAspect? false : false"/>
+ <line text="aspectOf? null : null"/>
+ </stderr>
+ </run>
+ </ajc-test>
+
<ajc-test dir="bugs152/pr126355" title="bizarre generic error with itds">
<compile files="Pair.java" options="-1.5"/>