diff options
author | Andy Clement <andrew.clement@gmail.com> | 2013-06-13 12:29:45 -0700 |
---|---|---|
committer | Andy Clement <andrew.clement@gmail.com> | 2013-06-13 12:29:45 -0700 |
commit | 5b0b6b07d2b581cddd1bac4a2a6b12cd4ac02b07 (patch) | |
tree | d70190d982a521f6392c71946c7a92e466e81b93 /tests | |
parent | 31d8e259e5cd8b1b4810d69bbf4b9ea45ae4a4c8 (diff) | |
download | aspectj-5b0b6b07d2b581cddd1bac4a2a6b12cd4ac02b07.tar.gz aspectj-5b0b6b07d2b581cddd1bac4a2a6b12cd4ac02b07.zip |
Preserve ordering of declare annotation when removing and adding annotations
Issue: 407739
Diffstat (limited to 'tests')
-rw-r--r-- | tests/bugs173/pr407739/.AbstractAspectChangeAnnotation.java.swp | bin | 0 -> 12288 bytes | |||
-rw-r--r-- | tests/bugs173/pr407739/Aspect.java | 6 | ||||
-rw-r--r-- | tests/bugs173/pr407739/Hello.java | 9 | ||||
-rw-r--r-- | tests/bugs173/pr407739/MyAnnotation.java | 13 | ||||
-rw-r--r-- | tests/bugs173/pr407966/Aspect.aj | 5 | ||||
-rw-r--r-- | tests/bugs173/pr407966/Def.java | 8 | ||||
-rw-r--r-- | tests/bugs173/pr407966/Use.java | 5 | ||||
-rw-r--r-- | tests/bugs173/pr408014/Code.java | 6 | ||||
-rw-r--r-- | tests/bugs173/pr408014/IIdentifiable.java2 | 5 | ||||
-rw-r--r-- | tests/bugs173/pr408014/IdentifiableMixin.java | 24 | ||||
-rw-r--r-- | tests/bugs173/pr408014/MyAspect.java | 17 | ||||
-rw-r--r-- | tests/bugs173/pr408014/UUID.java | 1 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc173/Ajc173Tests.java | 197 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc173/ajc173.xml | 22 |
14 files changed, 134 insertions, 184 deletions
diff --git a/tests/bugs173/pr407739/.AbstractAspectChangeAnnotation.java.swp b/tests/bugs173/pr407739/.AbstractAspectChangeAnnotation.java.swp Binary files differnew file mode 100644 index 000000000..f27d62670 --- /dev/null +++ b/tests/bugs173/pr407739/.AbstractAspectChangeAnnotation.java.swp diff --git a/tests/bugs173/pr407739/Aspect.java b/tests/bugs173/pr407739/Aspect.java new file mode 100644 index 000000000..439261bd9 --- /dev/null +++ b/tests/bugs173/pr407739/Aspect.java @@ -0,0 +1,6 @@ +public aspect Aspect { + + declare @field: * Hello.dummy : -@MyAnnotation; + declare @field: * Hello.dummy : @MyAnnotation(dummy2 = "korte"); + +} diff --git a/tests/bugs173/pr407739/Hello.java b/tests/bugs173/pr407739/Hello.java new file mode 100644 index 000000000..81c13f14d --- /dev/null +++ b/tests/bugs173/pr407739/Hello.java @@ -0,0 +1,9 @@ +public class Hello { + + @MyAnnotation(dummy1 = "alma") + private String dummy; + + public static void main(String []argv) throws Exception { + System.out.print(Hello.class.getDeclaredField("dummy").getDeclaredAnnotations()[0]); + } +} diff --git a/tests/bugs173/pr407739/MyAnnotation.java b/tests/bugs173/pr407739/MyAnnotation.java new file mode 100644 index 000000000..fbe3c25fb --- /dev/null +++ b/tests/bugs173/pr407739/MyAnnotation.java @@ -0,0 +1,13 @@ + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import java.lang.annotation.Retention; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Target; + +@Target({METHOD, FIELD}) +@Retention(RUNTIME) +public @interface MyAnnotation { + String dummy1() default ""; + String dummy2() default ""; +} diff --git a/tests/bugs173/pr407966/Aspect.aj b/tests/bugs173/pr407966/Aspect.aj new file mode 100644 index 000000000..7270f742f --- /dev/null +++ b/tests/bugs173/pr407966/Aspect.aj @@ -0,0 +1,5 @@ +public aspect Aspect { + void around(): call(* Def.def(..)) { + System.out.println("aspect"); + } +} diff --git a/tests/bugs173/pr407966/Def.java b/tests/bugs173/pr407966/Def.java new file mode 100644 index 000000000..49c6221fd --- /dev/null +++ b/tests/bugs173/pr407966/Def.java @@ -0,0 +1,8 @@ +class Clazz<T> { +} + +public class Def { + public static void def(Clazz<?>[] c) { + System.out.println("def"); + } +} diff --git a/tests/bugs173/pr407966/Use.java b/tests/bugs173/pr407966/Use.java new file mode 100644 index 000000000..2a21d396c --- /dev/null +++ b/tests/bugs173/pr407966/Use.java @@ -0,0 +1,5 @@ +public class Use { + public static void main(String[] argv) { + Def.def(null); + } +} diff --git a/tests/bugs173/pr408014/Code.java b/tests/bugs173/pr408014/Code.java new file mode 100644 index 000000000..ee219c4a0 --- /dev/null +++ b/tests/bugs173/pr408014/Code.java @@ -0,0 +1,6 @@ + +class Code implements Foo.Intface {} + +class Foo { + interface Intface {} +} diff --git a/tests/bugs173/pr408014/IIdentifiable.java2 b/tests/bugs173/pr408014/IIdentifiable.java2 new file mode 100644 index 000000000..b54cdeec4 --- /dev/null +++ b/tests/bugs173/pr408014/IIdentifiable.java2 @@ -0,0 +1,5 @@ +interface IIdentifiable { + UUID getPlatformId(); + void setPlatformId(UUID id); +} + diff --git a/tests/bugs173/pr408014/IdentifiableMixin.java b/tests/bugs173/pr408014/IdentifiableMixin.java new file mode 100644 index 000000000..fe9e45f81 --- /dev/null +++ b/tests/bugs173/pr408014/IdentifiableMixin.java @@ -0,0 +1,24 @@ +import org.aspectj.lang.annotation.*; + +public class IdentifiableMixin implements MyAspect.IIdentifiable { + + private String id; + + public String getPlatformId() { + return id; + } + +} + +@Aspect +class MyAspect { + + public interface IIdentifiable { + String getPlatformId(); + } + + @DeclareMixin("!is(InterfaceType) && !is(EnumType)") + public static IIdentifiable createIIdentifiable() { + return new IdentifiableMixin(); + } +} diff --git a/tests/bugs173/pr408014/MyAspect.java b/tests/bugs173/pr408014/MyAspect.java new file mode 100644 index 000000000..5643dbeed --- /dev/null +++ b/tests/bugs173/pr408014/MyAspect.java @@ -0,0 +1,17 @@ +import org.aspectj.lang.annotation.*; + +@Aspect +class MyAspect { + + public interface IIdentifiable { + UUID getPlatformId(); + void setPlatformId(UUID id); + } + + @DeclareMixin("!is(InterfaceType) && !is(EnumType)") + public static IIdentifiable createIIdentifiable() { + return new IdentifiableMixin(); + } +} + +class UUID {} diff --git a/tests/bugs173/pr408014/UUID.java b/tests/bugs173/pr408014/UUID.java new file mode 100644 index 000000000..320fc1c8c --- /dev/null +++ b/tests/bugs173/pr408014/UUID.java @@ -0,0 +1 @@ +class UUID {} diff --git a/tests/src/org/aspectj/systemtest/ajc173/Ajc173Tests.java b/tests/src/org/aspectj/systemtest/ajc173/Ajc173Tests.java index de3437baf..774cb84e6 100644 --- a/tests/src/org/aspectj/systemtest/ajc173/Ajc173Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc173/Ajc173Tests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Contributors + * Copyright (c) 2013 Contributors * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -24,6 +24,18 @@ import org.aspectj.testing.XMLBasedAjcTestCase; */ public class Ajc173Tests extends org.aspectj.testing.XMLBasedAjcTestCase { + public void testAddRemoveAnnos_407739() throws Exception { + runTest("add remove annos"); + } + +// public void testOrdering_407966() throws Exception { +// runTest("ordering"); +// } +// +// public void testInnerInterfaceMixin_408014() throws Exception { +// runTest("inner interface mixin"); +// } + public void testClassAnnoValue_405016_1() throws Exception { // test that class literals allowed runTest("class anno value 1"); @@ -57,189 +69,6 @@ public class Ajc173Tests extends org.aspectj.testing.XMLBasedAjcTestCase { assertEquals(1,ags.length); assertEquals("LFoo;",ags[0].getTypeSignature()); } - - // still broken! -// public void testDeclareAnnoOnItd2() throws Exception { -// runTest("declare anno on itd 2"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(),"C"); -// Method m = getMethodStartsWith(jc, "getName"); -// assertNotNull(m); -// AnnotationGen[] ags = m.getAnnotations(); -// for (int i=0;i<ags.length;i++) { -// System.out.println(ags[i]); -// } -// assertEquals(1,ags.length); -// assertEquals("LFoo;",ags[0].getTypeSignature()); -// } - -// // if the test is failing because the classes won't run, remove the run blocks from the ajc172.xml entry and re-run to check signatures. -// public void testSignatures_pr394535() throws Exception { -// runTest("signatures"); -// -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(),"Bug2$ClassA2"); // the working one -// String sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T::LBug2$Interface12;:LBug2$Interface22;>Ljava/lang/Object;Ljava/io/Serializable;", sss); -// -// jc = getClassFrom(ajc.getSandboxDirectory(),"Bug$ClassA"); -// sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T::LBug$Interface1;:LBug$Interface2;>Ljava/lang/Object;Ljava/io/Serializable;", sss); -// } -// -// // extends -// public void testPSignatures_pr399590() throws Exception { -// runTest("p signatures 1"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(),"Cage"); -// String sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T:LAnimal<+LCage<TT;>;>;>LBar;", sss); -// jc = getClassFrom(ajc.getSandboxDirectory(),"Cage2"); -// sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T:LAnimal2<+LCage2<TT;>;>;>LBar2;Ljava/io/Serializable;", sss); -// } -// -// // extends two classes -// public void testPSignatures_pr399590_2() throws Exception { -// runTest("p signatures 2"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(),"Cage"); -// String sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T:LAnimal<+LCage<TT;LIntf;>;LIntf;>;Q:Ljava/lang/Object;>LBar;", sss); -// jc = getClassFrom(ajc.getSandboxDirectory(),"Cage2"); -// sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T:LAnimal2<+LCage2<TT;LIntf2;>;LIntf2;>;Q:Ljava/lang/Object;>LBar2;Ljava/io/Serializable;", sss); -// } -// -// // super -// public void testPSignatures_pr399590_3() throws Exception { -// runTest("p signatures 3"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(),"Cage"); -// String sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T:LAnimal<-LXXX<TT;>;>;>LBar;", sss); -// jc = getClassFrom(ajc.getSandboxDirectory(),"Cage2"); -// sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T:LAnimal2<-LXXX2<TT;>;>;>LBar2;Ljava/io/Serializable;", sss); -// } -// -// // super -// public void testPSignatures_pr399590_4() throws Exception { -// runTest("p signatures 4"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(),"Cage"); -// String sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T:LAnimal<-LXXX<TT;>;LYYY;>;>LBar;", sss); -// jc = getClassFrom(ajc.getSandboxDirectory(),"Cage2"); -// sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T:LAnimal2<-LXXX2<TT;>;LYYY2;>;>LBar2;Ljava/io/Serializable;", sss); -// } -// -// // unbound -// public void testPSignatures_pr399590_5() throws Exception { -// runTest("p signatures 5"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(),"Cage"); -// String sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T:LAnimal<*>;>LBar;", sss); -// jc = getClassFrom(ajc.getSandboxDirectory(),"Cage2"); -// sss = jc.getSignatureAttribute().getSignature(); -// assertEquals("<T:LAnimal2<*>;>LBar2;Ljava/io/Serializable;", sss); -// } -// -// public void testIfPointcutNames_pr398246() throws Exception { -// runTest("if pointcut names"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), "X"); -// Method m = getMethodStartsWith(jc, "ajc$if"); -// assertEquals("ajc$if$andy", m.getName()); -// } -// -// public void testIfPointcutNames_pr398246_2() throws Exception { -// runTest("if pointcut names 2"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), "X"); -// Method m = getMethodStartsWith(jc, "ajc$if"); -// assertEquals("ajc$if$fred", m.getName()); -// } -// -// // fully qualified annotation name is used -// public void testIfPointcutNames_pr398246_3() throws Exception { -// runTest("if pointcut names 3"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), "X"); -// Method m = getMethodStartsWith(jc, "ajc$if"); -// assertEquals("ajc$if$barney", m.getName()); -// } -// -// // compiling a class later than the initial build - does it pick up the -// // right if clause name? -// public void testIfPointcutNames_pr398246_4() throws Exception { -// runTest("if pointcut names 4"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), "X"); -// Method m = getMethodStartsWith(jc, "ajc$if"); -// assertEquals("ajc$if$sid", m.getName()); -// } -// -// // new style generated names -// public void testIfPointcutNames_pr398246_5() throws Exception { -// runTest("if pointcut names 5"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), "X"); -// Method m = getMethodStartsWith(jc, "ajc$if"); -// assertEquals("ajc$if$ac0cb804", m.getName()); -// -// jc = getClassFrom(ajc.getSandboxDirectory(), "X2"); -// m = getMethodStartsWith(jc, "ajc$if"); -// assertEquals("ajc$if$ac0cb804", m.getName()); -// } -// -// // new style generated names - multiple ifs in one pointcut -// public void testIfPointcutNames_pr398246_6() throws Exception { -// runTest("if pointcut names 6"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), "X"); -// Method m = getMethodStartsWith(jc, "ajc$if",1); -// assertEquals("ajc$if$aac93da8", m.getName()); -// m = getMethodStartsWith(jc, "ajc$if",2); -// assertEquals("ajc$if$1$ae5e778a", m.getName()); -// } -// -// // new style generated names - multiple ifs in one advice -// public void testIfPointcutNames_pr398246_7() throws Exception { -// runTest("if pointcut names 7"); -// JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), "X"); -// Method m = getMethodStartsWith(jc, "ajc$if",1); -// assertEquals("ajc$if$1$ac0607c", m.getName()); -// m = getMethodStartsWith(jc, "ajc$if",2); -// assertEquals("ajc$if$1$1$4d4baf36", m.getName()); -// } -// -// public void testOptionalAspects_pr398588() { -// runTest("optional aspects"); -// } -// -// public void testInconsistentClassFile_pr389750() { -// runTest("inconsistent class file"); -// } -// -// public void testInconsistentClassFile_pr389750_2() { -// runTest("inconsistent class file 2"); -// } -// -// public void testInconsistentClassFile_pr389750_3() { -// runTest("inconsistent class file 3"); -// } -// -// public void testInconsistentClassFile_pr389750_4() { -// runTest("inconsistent class file 4"); -// } -// -// public void testAnnotationValueError_pr389752_1() { -// runTest("annotation value error 1"); -// } -// -// public void testAnnotationValueError_pr389752_2() { -// runTest("annotation value error 2"); -// } -// -// // this needs some cleverness to fix... the annotation value is parsed as a -// // string and then not checked -// // to see if the user is accidentally supplying, for example, an enum value. -// // Due to the use of strings, it -// // is hard to check. The verification code might go here: -// // WildAnnotationTypePattern, line 205 (the string case) -// // public void testAnnotationValueError_pr389752_3() { -// // runTest("annotation value error 3"); -// // } // --- diff --git a/tests/src/org/aspectj/systemtest/ajc173/ajc173.xml b/tests/src/org/aspectj/systemtest/ajc173/ajc173.xml index bcbfa7b96..f882d71c7 100644 --- a/tests/src/org/aspectj/systemtest/ajc173/ajc173.xml +++ b/tests/src/org/aspectj/systemtest/ajc173/ajc173.xml @@ -2,6 +2,28 @@ <suite> + <ajc-test dir="bugs173/pr407739" title="add remove annos"> + <compile files="MyAnnotation.java Hello.java Aspect.java" options="-1.5 -showWeaveInfo"> + <message kind="weave" text="'private String dummy [RuntimeVisibleAnnotations]' of type 'Hello' (Hello.java) has had @MyAnnotation field annotation removed by 'Aspect' (Aspect.java:3)"/> + <message kind="weave" text="'private String dummy [RuntimeVisibleAnnotations]' of type 'Hello' (Hello.java) is annotated with @MyAnnotation(dummy2 = "korte") field annotation from 'Aspect' (Aspect.java:4)"/> + </compile> + <run class="Hello"> + <stdout> + <line text="@MyAnnotation(dummy2=korte, dummy1=)"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs173/pr408014" title="inner interface mixin"> + <compile files="IdentifiableMixin.java" options="-1.5 -showWeaveInfo"> + </compile> + </ajc-test> + + <ajc-test dir="bugs173/pr407966" title="ordering"> + <compile files="Aspect.aj Use.java Def.java" options="-1.5 -showWeaveInfo"> + </compile> + </ajc-test> + <ajc-test dir="bugs173/pr407494" title="inner names"> <compile files="A.java" options="-1.5 -showWeaveInfo"> <message kind="weave" text="Join point 'staticinitialization(void a.b.c.A$B.<clinit>())' in Type 'a.b.c.A$B' (A.java:4) advised by before advice from 'a.b.c.X' (A.java:13)"/> |