aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/bugs1612/pr354470/Code.java48
-rw-r--r--tests/bugs1612/pr354470/Code2.java39
-rw-r--r--tests/bugs1612/pr354470/Code3.java41
-rw-r--r--tests/src/org/aspectj/systemtest/ajc1612/Ajc1612Tests.java12
-rw-r--r--tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml28
5 files changed, 168 insertions, 0 deletions
diff --git a/tests/bugs1612/pr354470/Code.java b/tests/bugs1612/pr354470/Code.java
new file mode 100644
index 000000000..044966200
--- /dev/null
+++ b/tests/bugs1612/pr354470/Code.java
@@ -0,0 +1,48 @@
+import org.aspectj.lang.annotation.*;
+import java.lang.annotation.*;
+import java.lang.reflect.*;
+
+@Aspect("perthis(transactional())")
+public class Code {
+ @Pointcut("execution(@Transactional * * (..))")
+ public void transactional() { }
+
+ public static void main(String[] args) {
+ print(AAA.class);
+ print(BBB.class);
+ print(CCC.class);
+ }
+
+ public static void print(Class clazz) {
+ System.out.println(clazz.getName());
+ Class[] ifs = clazz.getInterfaces();
+ if (ifs!=null) {
+ for (int i=0;i<ifs.length;i++) {
+ System.out.println(ifs[i]);
+ }
+ }
+ Field[] fs = clazz.getDeclaredFields();
+ if (fs!=null) {
+ for (int i=0;i<fs.length;i++) {
+ System.out.println(fs[i]);
+ }
+ }
+ }
+}
+
+class AAA {
+ public void m() { }
+}
+
+class BBB {
+ public void m() { }
+}
+
+class CCC {
+ @Transactional
+ public void m() { }
+}
+
+
+@Retention(RetentionPolicy.RUNTIME) @interface Transactional {}
+
diff --git a/tests/bugs1612/pr354470/Code2.java b/tests/bugs1612/pr354470/Code2.java
new file mode 100644
index 000000000..1cc1ea49b
--- /dev/null
+++ b/tests/bugs1612/pr354470/Code2.java
@@ -0,0 +1,39 @@
+import org.aspectj.lang.annotation.*;
+import java.lang.annotation.*;
+import java.lang.reflect.*;
+import org.aspectj.lang.*;
+
+@Aspect("perthis(transactional())")
+public class Code2 {
+ @Pointcut("execution(@Transactional * * (..))")
+ public void transactional() { }
+
+ @Before("execution(* *(..))")
+ public void m(JoinPoint.StaticPart thisJoinPointStaticPart) {
+ System.out.println(thisJoinPointStaticPart);
+ }
+
+ public static void main(String[] args) {
+ new AAA().m();
+ new BBB().m();
+ new CCC().m();
+ }
+
+}
+
+class AAA {
+ public void m() { }
+}
+
+class BBB {
+ public void m() { }
+}
+
+class CCC {
+ @Transactional
+ public void m() { }
+}
+
+
+@Retention(RetentionPolicy.RUNTIME) @interface Transactional {}
+
diff --git a/tests/bugs1612/pr354470/Code3.java b/tests/bugs1612/pr354470/Code3.java
new file mode 100644
index 000000000..7199b68e1
--- /dev/null
+++ b/tests/bugs1612/pr354470/Code3.java
@@ -0,0 +1,41 @@
+import org.aspectj.lang.annotation.*;
+import java.lang.annotation.*;
+import java.lang.reflect.*;
+import org.aspectj.lang.*;
+
+@Aspect("perthis(transactional())")
+public class Code3 {
+ @Pointcut("execution(@Transactional * * (..))")
+ public void transactional() { }
+
+ @Before("execution(* *(..))")
+ public void m(JoinPoint.StaticPart thisJoinPointStaticPart) {
+ System.out.println(thisJoinPointStaticPart);
+ }
+
+ public static void main(String[] args) {
+ new AAA().m();
+ new BBB().m();
+ new CCC().m();
+ }
+
+}
+
+aspect XXX {
+ @Transactional public void CCC.m() {}
+}
+
+class AAA {
+ public void m() { }
+}
+
+class BBB {
+ public void m() { }
+}
+
+class CCC {
+}
+
+
+@Retention(RetentionPolicy.RUNTIME) @interface Transactional {}
+
diff --git a/tests/src/org/aspectj/systemtest/ajc1612/Ajc1612Tests.java b/tests/src/org/aspectj/systemtest/ajc1612/Ajc1612Tests.java
index 27f6c58ae..43c638702 100644
--- a/tests/src/org/aspectj/systemtest/ajc1612/Ajc1612Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc1612/Ajc1612Tests.java
@@ -35,6 +35,18 @@ public class Ajc1612Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
// runTest("itd split compilation");
// }
+ public void testPervasivePerthis_354470() throws Exception {
+ runTest("perthis too pervasive");
+ }
+
+ public void testPervasivePerthis_354470_2() throws Exception {
+ runTest("perthis too pervasive 2");
+ }
+
+ public void testPervasivePerthis_354470_3() throws Exception {
+ runTest("perthis too pervasive 3");
+ }
+
public void testNotEqualWithAnnotationValues_357013() throws Exception {
runTest("annotation values not equal");
}
diff --git a/tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml b/tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml
index b54f5e855..f37b8834e 100644
--- a/tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml
+++ b/tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml
@@ -2,6 +2,34 @@
<suite>
+<ajc-test dir="bugs1612/pr354470" title="perthis too pervasive">
+<compile files="Code.java" options="-1.5"/>
+<run class="Code">
+<stdout>
+ <line text="AAA"/>
+ <line text="BBB"/>
+ <line text="CCC"/>
+ <line text="interface Code$ajcMightHaveAspect"/>
+ <line text="private transient Code CCC.ajc$Code$perObjectField"/>
+</stdout></run>
+</ajc-test>
+
+<ajc-test dir="bugs1612/pr354470" title="perthis too pervasive 2">
+<compile files="Code2.java" options="-1.5"/>
+<run class="Code2">
+<stdout>
+ <line text="execution(void CCC.m())"/>
+</stdout></run>
+</ajc-test>
+
+<ajc-test dir="bugs1612/pr354470" title="perthis too pervasive 3">
+<compile files="Code3.java" options="-1.5"/>
+<run class="Code3">
+<stdout>
+ <line text="execution(void CCC.m())"/>
+</stdout></run>
+</ajc-test>
+
<ajc-test dir="bugs1612/prx" title="class reference in annotation value">
<compile files="C.java" options="-1.5 -showWeaveInfo">
<message kind="weave" text="Join point 'field-get(int C.i)' in Type 'C' (C.java:17) advised by before advice from 'X' (C.java:22)"/>