diff options
author | Andy Clement <aclement@pivotal.io> | 2017-09-24 22:00:25 -0700 |
---|---|---|
committer | Andy Clement <aclement@pivotal.io> | 2017-09-24 22:00:25 -0700 |
commit | ab8339852515f04236d41b9af486ea9f0c50c6c7 (patch) | |
tree | ec08d02f6cfa6d4a81fef919a750cb19aa3f4ca4 /tests | |
parent | ad514d54b1014bbfa085096419080c9fc6e1642b (diff) | |
download | aspectj-ab8339852515f04236d41b9af486ea9f0c50c6c7.tar.gz aspectj-ab8339852515f04236d41b9af486ea9f0c50c6c7.zip |
Various changes to get tests passing on 1.8 and 1.9
Diffstat (limited to 'tests')
9 files changed, 6512 insertions, 4 deletions
diff --git a/tests/java5/annotations/itds/AtItd3.aj b/tests/java5/annotations/itds/AtItd3.aj index c3412cf56..8af19ed71 100644 --- a/tests/java5/annotations/itds/AtItd3.aj +++ b/tests/java5/annotations/itds/AtItd3.aj @@ -24,6 +24,7 @@ public class AtItd3 { if (!aa.toString().equals("@Ann(id=goodbye, anInt=4)")) // < Java8 order if (!aa.toString().equals("@Ann(anInt=4, id=goodbye)")) // Java8 order + if (!aa.toString().equals("@Ann(anInt=4, id=\"goodbye\")")) // Java9 quotes strings throw new RuntimeException("Incorrect output, expected:"+ "@Ann(id=goodbye, anInt=4) but got "+aa.toString()); diff --git a/tests/src/org/aspectj/systemtest/ajc1611/newfeatures-tests.xml b/tests/src/org/aspectj/systemtest/ajc1611/newfeatures-tests.xml index 7ba5316b5..0a8105df7 100644 --- a/tests/src/org/aspectj/systemtest/ajc1611/newfeatures-tests.xml +++ b/tests/src/org/aspectj/systemtest/ajc1611/newfeatures-tests.xml @@ -109,7 +109,8 @@ <run class="WithValues"> <stdout> <line text="i does not have Anno"/> - <line text="j has Banno:@Banno(hoo=abc)"/> + <line text="j has Banno:@Banno(hoo=abc)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/> + <line text="j has Banno:@Banno(hoo="abc")" vm="1.9"/> <line text="j does not have Anno"/> </stdout></run> </ajc-test> diff --git a/tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml b/tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml index 11746e122..8011cd68f 100644 --- a/tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml +++ b/tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml @@ -257,8 +257,10 @@ <compile files="AnnoBinding2.java" options="-1.5"/> <run class="AnnoBinding2"> <stdout> -<line text="get(int AnnoBinding2.field1) @Marker(message=foo)"/> -<line text="get(int AnnoBinding2.field2) @Marker(message=bar)"/> +<line text="get(int AnnoBinding2.field1) @Marker(message=foo)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/> +<line text="get(int AnnoBinding2.field1) @Marker(message="foo")" vm="1.9"/> +<line text="get(int AnnoBinding2.field2) @Marker(message=bar)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/> +<line text="get(int AnnoBinding2.field2) @Marker(message="bar")" vm="1.9"/> <line text="2 ajc$anno$NNN fields"/> </stdout> </run> diff --git a/tests/src/org/aspectj/systemtest/ajc173/ajc173.xml b/tests/src/org/aspectj/systemtest/ajc173/ajc173.xml index 7c2b88a54..4a784fff8 100644 --- a/tests/src/org/aspectj/systemtest/ajc173/ajc173.xml +++ b/tests/src/org/aspectj/systemtest/ajc173/ajc173.xml @@ -9,7 +9,8 @@ </compile> <run class="Hello"> <stdout> - <line text="@MyAnnotation(dummy1=, dummy2=korte)"/> + <line text="@MyAnnotation(dummy1=, dummy2=korte)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/> + <line text="@MyAnnotation(dummy1="", dummy2="korte")" vm="1.9"/> </stdout> </run> </ajc-test> diff --git a/tests/src/org/aspectj/systemtest/ajc190/Ajc190Tests.java b/tests/src/org/aspectj/systemtest/ajc190/Ajc190Tests.java index d2375625b..26d0905e8 100644 --- a/tests/src/org/aspectj/systemtest/ajc190/Ajc190Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc190/Ajc190Tests.java @@ -21,6 +21,18 @@ import junit.framework.Test; */ public class Ajc190Tests extends org.aspectj.testing.XMLBasedAjcTestCase { + public void testVarious_SettingFinalStatic() { + runTest("setting static final outside clinit"); + } + + public void testAnnotMethodHasMember_pr156962_1() { // From similar in Ajc153Tests + runTest("Test Annot Method Has Member 1"); + } + + public void testAnnotMethodHasMember_pr156962_2() { // From similar in Ajc153Tests + runTest("Test Annot Method Has Member 1"); + } + public void testFunnySignature() { runTest("funny signature with method reference"); } diff --git a/tests/src/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java b/tests/src/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java index 70dc872b5..139e99e69 100644 --- a/tests/src/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java +++ b/tests/src/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java @@ -20,6 +20,7 @@ public class AllTestsAspectJ190 { // $JUnit-BEGIN$ suite.addTest(Ajc190Tests.suite()); suite.addTest(SanityTests19.suite()); + suite.addTest(Annotations.suite()); // $JUnit-END$ return suite; } diff --git a/tests/src/org/aspectj/systemtest/ajc190/Annotations.java b/tests/src/org/aspectj/systemtest/ajc190/Annotations.java new file mode 100644 index 000000000..b2f8c267e --- /dev/null +++ b/tests/src/org/aspectj/systemtest/ajc190/Annotations.java @@ -0,0 +1,176 @@ +/******************************************************************************* + * Copyright (c) 2004, 2017 IBM + * 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 + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.aspectj.systemtest.ajc190; + +import java.io.File; + +import junit.framework.Test; + +import org.aspectj.apache.bcel.classfile.JavaClass; +import org.aspectj.apache.bcel.classfile.Method; +import org.aspectj.testing.XMLBasedAjcTestCase; + +/** + * A copy of the 1.5.0 Annotations test but with compliance set to 1.9 + * The testdata is referenced in the 150 test folder but the XML file indicates compliance of 1.9. + * + * @author Andy Clement + */ +public class Annotations extends XMLBasedAjcTestCase { + + public static Test suite() { + return XMLBasedAjcTestCase.loadSuite(Annotations.class); + } + + protected File getSpecFile() { + return new File("../tests/src/org/aspectj/systemtest/ajc190/ajc190_from150.xml"); + } + + public void testCompilingAnnotation() { + runTest("compiling an annotation"); + } + + public void testCompilingAnnotatedFile() { + runTest("compiling annotated file"); + } + + public void testCompilingUsingWithinAndAnnotationTypePattern() { + runTest("annotations and within (src)"); + } + + /** + * We had a bug where annotations were not present in the output class file for + * methods that got woven. This was due to unpacking bugs in LazyMethodGen. This + * test compiles a simple program then checks the annotations were copied + * across. + */ + public void testBugWithAnnotationsLostOnWovenMethods() throws ClassNotFoundException { + runTest("losing annotations..."); + if (getCurrentTest().canRunOnThisVM()) { + + JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), "Program"); + Method[] meths = jc.getMethods(); + for (int i = 0; i < meths.length; i++) { + Method method = meths[i]; + if (method.getName().equals("m1")) { + assertTrue("Didn't have annotations - were they lost? method=" + method.getName(), + method.getAnnotations().length == 1); + } + } + } + } + + public void testAnnotatedAnnotations() { + runTest("annotated annotations (@Target)"); + } + + public void testSimpleAnnotatedAspectMembers() { + runTest("simple annotated aspect members"); + } + + public void testAnnotatedAspectMembersWithWrongAnnotationType() { + runTest("simple annotated aspect members with bad target"); + } + + // more implementation work needed before this test passes + public void testAnnotatedITDs() { + runTest("annotated itds"); + } + + public void testAnnotatedITDs2() { + runTest("annotated public itds"); + } + + public void testAnnotatedITDs3() { + runTest("annotated public itds - values"); + } + + public void testAnnotatedITDs4() { + runTest("annotated public itds - multiple complex annotations"); + } + + public void testAnnotatedITDsWithWrongAnnotationType() { + runTest("annotated itds with bad target"); + } + + public void testAnnotatedAdvice() { + runTest("annotated advice"); + } + + public void testAnnotatedAdviceWithWrongAnnotationType() { + runTest("annotated advice with bad target"); + } + + public void testAnnotatedPointcut() { + runTest("annotated pointcut"); + } + + // FIXME asc uncomment this test when parser is opened up + // public void testAnnotatedDeclareStatements() { + // runTest("annotated declare statements"); + // } + + public void testBasicDeclareAnnotation() { + runTest("basic declare annotation parse test"); + } + + public void testAJDKAnnotatingAspects() { + runTest("ajdk: annotating aspects chapter"); + } + + public void testAJDKAnnotatingAspects2() { + runTest("ajdk: annotating aspects chapter, ex 2"); + } + + public void testAnnotationPatterns() { + runTest("ajdk: annotation pattern matching"); + } + + public void testAnnotationTypePatterns() { + runTest("ajdk: annotation type pattern matching"); + } + + public void testAnnotationSigPatterns() { + runTest("ajdk: annotations in sig patterns"); + } + + public void testAnnotationRuntimeMatching() { + runTest("ajdk: runtime annotations"); + } + + public void testAnnotationRetentionChecking() { + runTest("ajdk: @retention checking"); + } + + public void testAnnotationInheritance() { + runTest("ajdk: @inherited"); + } + + public void testAnnotationDEOW() { + runTest("ajdk: deow-ann"); + } + + public void testAnnotationDecp() { + runTest("ajdk: decp-ann"); + } + + public void testAnnotationDecPrecedence() { + runTest("ajdk: dec precedence"); + } + + public void testAnnotationDecAnnotation() { + runTest("ajdk: dec annotation"); + } + + public void testAnnotationsAndITDs() { + runTest("nasty annotation and itds test"); + } + + // helper methods..... + +}
\ No newline at end of file diff --git a/tests/src/org/aspectj/systemtest/ajc190/ajc190.xml b/tests/src/org/aspectj/systemtest/ajc190/ajc190.xml index a270116e3..c2cb7cee8 100644 --- a/tests/src/org/aspectj/systemtest/ajc190/ajc190.xml +++ b/tests/src/org/aspectj/systemtest/ajc190/ajc190.xml @@ -10,5 +10,29 @@ <compile files="aspect1/Azpect1.java" inpath="module1/module-one.jar" outjar="runner.jar" options="-1.8"/> <java classpath="runner.jar" class="a.b.c.Code"/> </ajc-test> + + <ajc-test dir="bugs190/various" title="setting static final outside clinit"> + <compile files="Code.java" options="-1.9"/> + <run class="Code"> + <stdout> + <line text="call(void java.io.PrintStream.println(String))"/> + <line text="running"/> + </stdout> + </run> + </ajc-test> + + <!-- from ajc153 --> + <ajc-test dir="bugs153/pr156962" title="Test Annot Method Has Member 1"> + <compile files="Sample.java, LiftDeprecation.aj" options="-1.9 -XhasMember -showWeaveInfo -Xlint:ignore"> + <message kind="weave" text="'Sample' (Sample.java:1) is annotated with @Deprecated type annotation from 'LiftDeprecation' (LiftDeprecation.aj:2)"/> + </compile> + </ajc-test> + + <!-- from ajc153 --> + <ajc-test dir="bugs153/pr156962" title="Test Annot Method Has Member 2"> + <compile files="Sample.java, LiftDeprecation.aj" options="-1.8 -XhasMember -showWeaveInfo -Xlint:ignore"> + <message kind="weave" text="'Sample' (Sample.java:1) is annotated with @Deprecated type annotation from 'LiftDeprecation' (LiftDeprecation.aj:2)"/> + </compile> + </ajc-test> </suite> diff --git a/tests/src/org/aspectj/systemtest/ajc190/ajc190_from150.xml b/tests/src/org/aspectj/systemtest/ajc190/ajc190_from150.xml new file mode 100644 index 000000000..41a75c0ae --- /dev/null +++ b/tests/src/org/aspectj/systemtest/ajc190/ajc190_from150.xml @@ -0,0 +1,6290 @@ +<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[]> + +<!-- AspectJ v1.5.0 Tests --> +<suite> + + <ajc-test dir="bugs150" title="abstract perthis in @AspectJ"> + <compile files="pr121197.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" title="different numbers of type vars"> + <compile files="pr121575.aj" options="-1.9"/> + <run class="pr121575"/> + </ajc-test> + + + <ajc-test dir="bugs150/pr121385" title="mixing aspect styles"> + <compile files="A.java" options="-1.9"/> + <run class="A"/> + </ajc-test> + + <ajc-test dir="java5/generics/tvars" title="different numbers of type vars - 2"> + <compile files="Case1.aj" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Join point 'method-execution(void MyClass.read(java.lang.String))' in Type 'MyClass' (Case1.aj:13) advised by before advice from 'MyAspect' (Case1.aj:5)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/tvars" title="different numbers of type vars - 3"> + <compile files="Case2.aj" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Join point 'method-execution(void MyClass.read(java.lang.Number))' in Type 'MyClass' (Case2.aj:13) advised by before advice from 'MyAspect' (Case2.aj:5)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/tvars" title="different numbers of type vars - 4"> + <compile files="Case3.aj" options="-1.9 -showWeaveInfo"> + <message kind="error" line="9" text="The type MyClass<T,E> must implement the inherited abstract method MyInterface<T>.read(T)"/> + </compile> + </ajc-test> + + + <ajc-test dir="bugs150" title="access to private ITD from nested type"> + <compile files="pr118698.aj"/> + <run class="pr118698"/> + </ajc-test> + + <ajc-test dir="bugs150" title="modifier overrides"> + <compile files="pr119749.aj" options="-1.9"> + <message kind="warning" line="26" text="C E.*()"/> + <message kind="warning" line="25" text="D E.*()"/> + <message kind="warning" line="17" text="aa @Me void m()"/> + <message kind="warning" line="17" text="aa void m() throws Exception"/> + <message kind="warning" line="17" text="aa * *(..) throws Exception"/> + <message kind="warning" line="37" text="aa call void m() throws Exception"/> + <message kind="warning" line="38" text="aa call void m() throws Exception"/> + </compile> + <run class="pr119749"> + <stdout> + <line text="execution(void pr119749.C.m()): execMe[Me]"/> + <line text="execution(void pr119749.C.m()): execEx"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr120826" pr="120826" title="varargs NPE"> + <compile files="TestVarargs.java" options="-1.9"/> + </ajc-test> + + + <ajc-test dir="bugs150/pr112476/case1" title="binary weaving decp broken"> + <compile files="lib/A.java,lib/B.java,lib/C.java" outjar="library.jar" options="-1.9"/> + <!-- library.jar on the aspectpath here just for resolution when compiling SuperC --> + <compile aspectpath="library.jar" files="weaved/SuperC.java" outjar="newsuper.jar" options="-1.9"/> + <compile inpath="library.jar;newsuper.jar" files="weaved/DeclareAspect.aj" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Setting superclass of type 'lib.C' (C.java) to 'weaved.SuperC' (DeclareAspect.aj)"/> + </compile> + <run class="weaved.SuperC"> + <stdout> + <line text="Is [class lib.C] subcass of [class weaved.SuperC]? true"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr114005" title="Annotated ITDFs - 1"> + <compile files="Declaration1.java" options="-1.9"/> + <run class="Declaration1"> + <stdout> + <line text="public java.lang.String Test.firstProperty has annotation:true"/> + <line text="public java.lang.String Test.secondProperty has annotation:true"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" pr="114495" title="parameterized pointcut and advice"> + <compile files="Pr114495.aj" options="-1.9"> + <message kind="warning" line="3" text="going()"/> + </compile> + <run class="Pr114495"> + <stdout> + <line text="A.going()"/> + <line text="AA.going()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" pr="112880" title="double parameter generic abstract type"> + <compile files="Pr112880.aj" options="-1.9"> + </compile> + <run class="Pr112880"> + <stdout> + <line text="method returning C1 or C2"/> + <line text="method returning C1 or C2"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr114005" title="Annotated ITDFs - 2"> + <compile files="Declaration2.java" options="-1.9"/> + <run class="Declaration2"> + <stdout> + <line text="public java.lang.String Test.firstProperty has annotation:true"/> + <line text="public java.lang.String Test.secondProperty has annotation:true"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" pr="114054" title="pertarget and negated pointcut"> + <compile files="Pr114054.aj" options=""/> + <run class="Pr114054"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="121385" title="mixing styles"> + <compile files="pr121385.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/decps" title="decps - 1"> + <compile files="Basic1.java" options="-1.9"/> + <run class="Basic1"/> + </ajc-test> + + <ajc-test dir="java5/decps" title="decps - 1b"> + <compile files="Basic1b.java" options="-1.9"/> + <run class="Basic1b"/> + </ajc-test> + + <ajc-test dir="java5/decps" title="decps - 2"> + <compile files="Basic2.java" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Join point 'method-execution(void X$I.m2())' in Type 'X' (Basic2.java:15) advised by before advice from 'X' (Basic2.java:23)"/> + <message kind="weave" text="Type 'X$I' (Basic2.java) has intertyped method from 'X' (Basic2.java:'void X$I.m2()')"/> + <message kind="weave" text="Extending interface set for type 'Basic2' (Basic2.java) to include 'X$I' (Basic2.java)"/> + <message kind="weave" text="Type 'Basic2' (Basic2.java) has intertyped method from 'X' (Basic2.java:'void X$I.m2()')"/> + <message kind="weave" text="Join point 'method-execution(void Basic2.main(java.lang.String[]))' in Type 'Basic2' (Basic2.java:2) advised by before advice from 'X' (Basic2.java:23)"/> + </compile> + <run class="Basic2"/> + </ajc-test> + + <ajc-test dir="java5/decps" title="decps - 2b"> + <compile files="Basic2b.java" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Join point 'method-execution(void X$IIimpl.m2())' in Type 'X$IIimpl' (Basic2b.java:18) advised by before advice from 'X' (Basic2b.java:27)"/> + <message kind="weave" text="Extending interface set for type 'Basic2b' (Basic2b.java) to include 'X$I' (Basic2b.java)"/> + <message kind="weave" text="Join point 'method-execution(void Basic2b.main(java.lang.String[]))' in Type 'Basic2b' (Basic2b.java:4) advised by before advice from 'X' (Basic2b.java:27)"/> + </compile> + <run class="Basic2b"/> + </ajc-test> + + <ajc-test dir="java5/decps" title="decps - 3"> + <compile files="Basic3.java" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Extending interface set for type 'Basic3' (Basic3.java) to include 'X$I' (Basic3.java)"/> + <message kind="weave" text="Type 'Basic3' (Basic3.java) has intertyped method from 'X' (Basic3.java:'void X$I.m2()')"/> + <message kind="weave" text="Type 'Basic3' (Basic3.java) has intertyped method from 'X' (Basic3.java:'void X$I.m3()')"/> + <message kind="weave" text="Type 'Basic3' (Basic3.java) has intertyped method from 'X' (Basic3.java:'void X$I.m4()')"/> + <message kind="weave" text="Join point 'method-call(void X$I.m2())' in Type 'Basic3' (Basic3.java:7) advised by before advice from 'X' (Basic3.java:29)"/> + <message kind="weave" text="Join point 'method-call(void X$I.m3())' in Type 'Basic3' (Basic3.java:8) advised by before advice from 'X' (Basic3.java:29)"/> + <message kind="weave" text="Join point 'method-call(void X$I.m2())' in Type 'Basic3' (Basic3.java:9) advised by before advice from 'X' (Basic3.java:29)"/> + <message kind="weave" text="Join point 'method-call(void X$I.m4())' in Type 'Basic3' (Basic3.java:10) advised by before advice from 'X' (Basic3.java:29)"/> + <message kind="weave" text="Type 'X$I' (Basic3.java) has intertyped method from 'X' (Basic3.java:'void X$I.m2()')"/> + <message kind="weave" text="Type 'X$I' (Basic3.java) has intertyped method from 'X' (Basic3.java:'void X$I.m3()')"/> + <message kind="weave" text="Type 'X$I' (Basic3.java) has intertyped method from 'X' (Basic3.java:'void X$I.m4()')"/> + </compile> + <run class="Basic3"/> + </ajc-test> + + <ajc-test dir="java5/decps" title="decps - 3b"> + <compile files="Basic3b.java" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Extending interface set for type 'Basic3b' (Basic3b.java) to include 'X$I' (Basic3b.java)"/> + <message kind="weave" text="Type 'Basic3b' (Basic3b.java) has intertyped method from 'X' (Basic3b.java:'void X$I.m2()')"/> + <message kind="weave" text="Type 'Basic3b' (Basic3b.java) has intertyped method from 'X' (Basic3b.java:'void X$I.m3()')"/> + <message kind="weave" text="Type 'Basic3b' (Basic3b.java) has intertyped method from 'X' (Basic3b.java:'void X$I.m4()')"/> + <message kind="weave" text="Join point 'method-call(void X$I.m2())' in Type 'Basic3b' (Basic3b.java:7) advised by before advice from 'X' (Basic3b.java:35)"/> + <message kind="weave" text="Join point 'method-call(void X$I.m3())' in Type 'Basic3b' (Basic3b.java:8) advised by before advice from 'X' (Basic3b.java:35)"/> + <message kind="weave" text="Join point 'method-call(void X$I.m2())' in Type 'Basic3b' (Basic3b.java:9) advised by before advice from 'X' (Basic3b.java:35)"/> + <message kind="weave" text="Join point 'method-call(void X$I.m4())' in Type 'Basic3b' (Basic3b.java:10) advised by before advice from 'X' (Basic3b.java:35)"/> + </compile> + <run class="Basic3b"/> + </ajc-test> + + <ajc-test dir="java5/decps" title="decps - 3c"> + <compile files="Basic3c.java" options="-1.9"> + <message kind="error" text="@DeclareParents: defaultImpl="X$IImpl" has a no argument constructor, but it is of incorrect visibility"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr119570" pr="119570" title="spurious override method warning"> + <compile files="NodeImpl.java,INode.java,ParameterizedDP.java" options="-1.9"/> + <run class="bugs.ParameterizedDP"/> + </ajc-test> + + <ajc-test dir="bugs150/pr119570" pr="119570" title="spurious override method warning - 2"> + <compile files="ParameterizedDP.java,NodeImpl.java,INode.java" options="-1.9"/> + <run class="bugs.ParameterizedDP"/> + </ajc-test> + + <ajc-test dir="bugs150/pr119570" pr="119570" title="spurious override method warning - 3"> + <compile files="SimpleTest.java" options="-1.9"/> + <run class="SimpleTest"/> + </ajc-test> + + <ajc-test dir="bugs150/pr120521" pr="120521" title="named pointcut not resolved in pertarget pointcut"> + <compile files="PerTargetSubaspectError.java"/> + </ajc-test> + + <ajc-test dir="bugs150/pr119210" pr="119210" title="autoboxing around advice - 1"> + <compile files="TestLib.java,ThreadAspectLib.java" options="-1.9"/> + <run class="TestLib"> + <stderr> + <line text="obtaining five, got 3"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr119210" pr="119210" title="autoboxing around advice - 2"> + <compile files="TestLib2.java,ThreadAspectLib2.java" options="-1.9"/> + <run class="TestLib2"> + <stderr> + <line text="obtaining five, got 3"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr119210" pr="119210" title="autoboxing around advice - 3"> + <compile files="TestLib2.java,ThreadAspectLib2.java"> + <message kind="error" line="16" text="incompatible return type applying to method-call(java.lang.Integer TestLib2.getFive())"/> + <message kind="error" line="4" text="incompatible return type applying to method-call(java.lang.Integer TestLib2.getFive())"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr119539" pr="119539" title="generic pertypewithin aspect - 1"> + <compile files="GenericPerTypeWithin.java" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Join point 'constructor-execution(void bugs.C.<init>())' in Type 'bugs.C' (GenericPerTypeWithin.java:10) advised by before advice from 'bugs.A' (GenericPerTypeWithin.java:21)"/> + <message kind="weave" text="Join point 'constructor-execution(void bugs.C.<init>())' in Type 'bugs.C' (GenericPerTypeWithin.java:10) advised by before advice from 'bugs.A' (GenericPerTypeWithin.java:20)"/> + </compile> + <run class="bugs.GenericPerTypeWithin"/> + </ajc-test> + + <ajc-test dir="bugs150/pr119539" pr="119539" title="generic pertypewithin aspect - 2"> + <compile files="GenericPerTypeWithin2.java" options="-1.9 -showWeaveInfo"> + <message kind="error" line="24" text="a generic super-aspect must be fully parameterized in an extends clause"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr119539" pr="119539" title="generic pertypewithin aspect - 3"> + <compile files="GenericPerTypeWithin3.java" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Join point 'constructor-execution(void bugs.GenericPerTypeWithin3$C.<init>())' in Type 'bugs.GenericPerTypeWithin3$C' (GenericPerTypeWithin3.java:15) advised by before advice from 'bugs.GenericPerTypeWithin3$A' (GenericPerTypeWithin3.java:10)"/> + <message kind="warning" line="15" text="Singleton.creation()"/> + </compile> + <run class="bugs.GenericPerTypeWithin3"/> + </ajc-test> + + <ajc-test dir="bugs150/pr117854" pr="117854" title="broken switch transform"> + <compile files="BrokenSwitch.java" options=""/> + <run class="BrokenSwitch"/> + </ajc-test> + + <ajc-test dir="bugs150/pr119749" pr="119749" title="incorrect exception signature matching"> + <compile files="InheritedThrows.java" options="-showWeaveInfo"> + <message kind="weave" text="Join point 'method-execution(void InheritedThrows$NestedClassBoth.m())' in Type 'InheritedThrows$NestedClassBoth' (InheritedThrows.java:24) advised by afterThrowing advice from 'InheritedThrows$A' (InheritedThrows.java:4)"/> + <message kind="weave" text="Join point 'method-execution(void InheritedThrows$NestedClass1.m())' in Type 'InheritedThrows$NestedClass1' (InheritedThrows.java:16) advised by afterThrowing advice from 'InheritedThrows$A' (InheritedThrows.java:4)"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr118599" pr="118599" title="ambiguous method when binary weaving - 1"> + <!-- separate compilation was failing --> + <compile files="Attributable.java" outjar="foo.jar" options="-1.9"/> + <compile files="AnAttributedClass.java" aspectpath="foo.jar" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr118599" pr="118599" title="ambiguous method when binary weaving - 2"> + <!-- complete compilation works --> + <compile files="Attributable.java,AnAttributedClass.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="104220" title="adviceexecution join point toString forms"> + <compile files="Pr104220.aj"/> + <run class="Pr104220"> + <stdout> + <line text="adviceexecution"/> + <line text="adviceexecution(void SomeAspect.before())"/> + <line text="adviceexecution(SomeAspect.before())"/> + <line text="adviceexecution(void SomeAspect.before())"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" pr="112756" title="pointcut expression containing 'assert'"> + <compile files="Pr112756.aj" options="-warn:assertIdentifier -Xdev:Pinpoint"/> + </ajc-test> + + <ajc-test dir="bugs150/pr118781" pr="118781" title="verify error with around advice array sigs"> + <compile files="MyMain.java,MyAspect.java,MyClass.java" options="-XnoInline"/> + <run class="blah.MyMain"/> + </ajc-test> + + <ajc-test dir="bugs150/pr117681" pr="117681" title="at declare parents"> + <compile files="Test.java,TestAspect.java,Audit.java,AuditImpl.java" options="-1.9"/> + <run class="Test"/> + </ajc-test> + + <ajc-test dir="bugs150/pr120474" pr="120474" title="Dollar classes"> + <compile files="$ProxyPr120474.java"/> + <compile files="X.aj" options="-outxml"/> + <run class="$ProxyPr120474" ltw="aop.xml"> + <stdout> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr111667" pr="111667" title="lint for advice sorting"> + <compile files="A.java,X.java,Y.java" options="-1.9 -Xlint:warning"> + <message kind="warning" line="9" text="at this shadow method-execution(void A.m1()) no precedence is specified between advice applying from aspect X and aspect Y [Xlint:unorderedAdviceAtShadow]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr118326" pr="118326" title="illegal initialization - 1"> + <compile files="Foo.java,Bar.java"> + <message kind="error" line="2" text="Type mismatch: cannot convert from null to int"/> + <message kind="error" line="6" text="Type mismatch: cannot convert from Integer to int"/> + <message kind="error" line="8" text="Type mismatch: cannot convert from String to int"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr118326" pr="118326" title="illegal initialization - 2"> + <compile files="Foo.java,Bar.java" options="-1.9"> + <message kind="error" line="2" text="Type mismatch: cannot convert from null to int"/> + <message kind="error" line="8" text="Type mismatch: cannot convert from String to int"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr117296" pr="117296" title="self bounding generic types"> + <compile files="PropertySupport.java" options="-1.9"/> + <run class="PropertySupport"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="113368" title="thisJoinPointStaticPart in if test"> + <compile files="Pr113368.aj"/> + <run class="Pr113368"> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr87525" pr="87525" title="privilege problem with switch"> + <compile files="A.java,B.java"> + <message kind="error" line="5" text="Fields accessible due to an aspect being privileged can not be used in switch statements"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/reflection" title="pointcut parsing with ajc compiled pointcut references"> + <compile files="PointcutLibrary.aj,ReflectOnAjcCompiledPointcuts.java" options="-1.9"></compile> + <run class="ReflectOnAjcCompiledPointcuts" classpath="../lib/bcel/bcel.jar"/> + </ajc-test> + + <ajc-test dir="java5/reflection" title="reflection on itds"> + <compile files="InterTypeDeclarations.aj,ReflectOnCodeStyleITDs.java" options="-1.9 -Xlint:ignore -makeAjReflectable"></compile> + <run class="ReflectOnCodeStyleITDs" classpath="../lib/bcel/bcel.jar"> + <stdout> + <line text="public C.new(int, int, int)"/> + <line text="C.new(int, int)"/> + <line text="private C.new(int)"/> + <line text="private C.new(int)"/> + <line text="public C.new(int, int, int)"/> + <line text="public C.new(int, int, int)"/> + <line text="int C.getY()"/> + <line text="int I.getY()"/> + <line text="public int C.getZ()"/> + <line text="public int I.getZ()"/> + <line text="private int C.getX()"/> + <line text="private int I.getX()"/> + <line text="private int C.getX()"/> + <line text="public int C.getZ()"/> + <line text="public int I.getZ()"/> + <line text="public int C.getZ()"/> + <line text="int C.y"/> + <line text="int I.y"/> + <line text="public int C.z"/> + <line text="public int I.z"/> + <line text="private int C.x"/> + <line text="private int I.x"/> + <line text="private int C.x"/> + <line text="public int C.z"/> + <line text="public int I.z"/> + <line text="public int C.z"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/reflection" title="reflection on @DeclareParents"> + <compile files="AtAspectJDeclareParents.aj,ReflectOnAtAspectJDeclareParents.java" options="-1.9 -Xlint:ignore"></compile> + <run class="ReflectOnAtAspectJDeclareParents" classpath="../lib/bcel/bcel.jar"> + <stdout> + <line text="declare parents : C implements I"/> + <line text="public int I.getX()"/> + <line text="public void I.setX(int)"/> + <line text="public int I.getX()"/> + <line text="public int I.getX()"/> + <line text="public void I.setX(int)"/> + <line text="public int I.getX()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="compatibility/case1" title="generating code for a 1.2.1 runtime - 1"> + <compile files="Simple.java" options="-Xajruntimetarget:1.2"/> + <run class="Simple" classpath="../lib/aspectj/lib/aspectjrt121.jar"/> + </ajc-test> + + <ajc-test dir="compatibility/case2" title="generating code for a 1.2.1 runtime - 2"> + <compile files="TrackingErrors.aj,A.java" options="-Xajruntimetarget:1.2 -Xlint:ignore"/> + <run class="A" classpath="../lib/aspectj/lib/aspectjrt121.jar"/> + </ajc-test> + + <ajc-test dir="java5/reflection" title="arg names in advice annotations"> + <compile files="AdviceWithArgs.aj" options="-1.9"></compile> + <run class="AdviceWithArgs"/> + </ajc-test> + + + <ajc-test dir="java5/reflection" pr="114322" title="reflection on abstract ITDs (Billing example)"> + <compile files="ReflectBilling.java,Billing.aj" options="-1.9 -makeAjReflectable"/> + <run class="ReflectBilling"> + <stdout> + <line text="public void Customer.addCharge(long)"/> + <line text="public long Local.callRate()"/> + <line text="public long LongDistance.callRate()"/> + <line text="public abstract long Connection.callRate()"/> + <line text="public Customer Connection.payer"/> + <line text="public long Customer.totalCharge"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" pr="103157" title="returning(Object) binding"> + <compile files="Pr103157.aj"/> + <run class="Pr103157"> + <stdout> + <line text="returning from staticinit"/> + <line text="returning from preinit"/> + <line text="returning from set"/> + <line text="returning from cons exe"/> + <line text="returning from init"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" title="declare soft and adviceexecution" pr="103051"> + <compile files="Pr103051.aj" options="-Xdev:Pinpoint"/> + </ajc-test> + + <ajc-test dir="bugs150" title="declare soft and exclusions" pr="103097"> + <compile files="Pr103097.aj" options="-Xlint:ignore"/> + <run class="Pr103097"/> + </ajc-test> + + + <ajc-test dir="bugs150" title="Range problem"> + <compile files="pr109614.java"/> + <run class="pr109614"/> + </ajc-test> + + <ajc-test dir="bugs150/pr114436" title="ClassFormatError binary weaving perthis"> + <compile files="SimpleTrace.aj,ConcreteSimpleTracing.aj" outjar="aspects.jar"/> + <compile files="TestClass.java" aspectpath="aspects.jar"/> + <run class="TestClass"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113066" title="possible static imports bug - 1"> + <compile files="Consts.java,TestNPE.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" title="parameterized type and around advice"> + <compile files="pr115250.aj" options="-1.9 -Xlint:ignore"> + <!-- this first error happens twice, once for each piece of around advice --> + <message kind="error" line="10" text="incompatible return type applying to constructor-execution(void pr115250$C.<init>())"/> + <message kind="error" line="17" text="incompatible return type applying to constructor-execution(void pr115250$C.<init>())"/> + <message kind="error" line="27" text="incompatible return type applying to constructor-execution(void pr115250$C.<init>())"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="parameterized type and around advice - 2"> + <compile files="pr115250_2.aj" options="-1.9 -Xlint:ignore -showWeaveInfo"> + <message kind="weave" text="Join point 'method-execution(pr115250_2$C pr115250_2$C.foo())' in Type 'pr115250_2$C' (pr115250_2.aj:7) advised by around advice from 'pr115250_2$A' (pr115250_2.aj:22)"/> + <message kind="weave" text="Join point 'method-execution(pr115250_2$C pr115250_2$C.foo())' in Type 'pr115250_2$C' (pr115250_2.aj:7) advised by around advice from 'pr115250_2$Normal' (pr115250_2.aj:12)"/> + </compile> + <run class="pr115250_2"> + <stderr> + <line text="funky advice running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr115788" title="parser exception"> + <compile files="AAA.java"> + <message kind="warning" line="3" text="no match for this type name: Screen"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr113066" title="possible static imports bug - 2"> + <compile files="Consts2.java,TestNPE2.java" options="-1.9"> + <message kind="error" line="2" text="The field Consts2.a.Consts2.A_CONST is not visible"/> + <!-- message has changed with 3.3 compiler upgrade, it used to be this: --> + <!-- message kind="error" line="2" text="The import a.Consts2.A_CONST cannot be resolved"/--> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr113066" title="possible static imports bug - 3"> + <compile files="Consts3.java,TestNPE3.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/staticImports" title="import static java.lang.System.out"> + <compile files="StaticImport.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" title="Problem with constructor ITDs"> + <compile files="pr112783.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" title="NPE in ensureScopeSetup"> + <compile files="pr115038.aj" options="-1.9"> + <message kind="error" line="2" text="Cannot make inter-type declarations on type variables"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="ITDC with no explicit cons call"> + <compile files="Pr62606.aj" options="-1.9"> + <message kind="warning" line="6" text="[Xlint:noExplicitConstructorCall]"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/bugs" title="using same type variable in ITD"> + <compile files="SameTypeVariable.aj" options="-1.9"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="capturebinding wildcard problem"> + <compile files="pr114744.aj" options="-1.9"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="Anonymous types and nome matching"> + <compile files="Pr73050.aj" outjar="jar1.jar"> + <message kind="warning" line="16" text="anonymous types should be matched by a * wild card"/> + </compile> + <compile inpath="jar1.jar"> + <message kind="warning" line="0" text="anonymous types should be matched by a * wild card"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr86903" title="bcelrenderer bad"> + <compile files="GenericService.java,Service.java,Main.java,BadWormhole.java"/> + <run class="Main"/> + </ajc-test> + + <ajc-test dir="bugs150/pr114343" title="field-get, generics and around advice"> + <compile files="Test.java,Test1.java,Test2.java,TestAspect.aj" options="-1.9"> + <message kind="warning" line="7" text="unchecked conversion when advice applied at shadow field-get(java.util.Set Test1.intsSet), expected java.util.Set<java.lang.Integer> but advice uses java.util.Set"/> + <message kind="warning" line="8" text="unchecked conversion when advice applied at shadow field-get(java.util.Set Test2.doubSet), expected java.util.Set<java.lang.Double> but advice uses java.util.Set"/> + </compile> + <run class="TestAspect"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113947/case1" title="maws generic aspect - 1"> + <compile files="AbstractListSupport.java,AnotherItem.java,Item.java,LinkedList.java,LinkedListItem.java,ListItem.java,StringList.java" options="-1.9"> + <message kind="error" line="6" text="Cannot make inter-type declarations on type variables"/> + <message kind="error" line="8" text="Cannot make inter-type declarations on type variables"/> + <message kind="error" line="12" text="Cannot make inter-type declarations on type variables"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="aspectOf and generic aspects"> + <compile files="pr115237.aj" options="-1.9"/> + <run class="pr115237"/> + </ajc-test> + + <ajc-test dir="bugs150/pr114343/case2" title="field-get, generics and around advice - 2"> + <compile files="Test.java,TTT.java,TestAspect.java" options="-1.9"/> + <run class="TestAspect"> + <stderr> + <line text="TestAspect.main: Calling foo"/> + <line text="Creating Test<Integer> instance"/> + <line text="Calling toArray"/> + <line text="In around advice"/> + <line text="In toArray()"/> + <line text="done"/> + <line text="TestAspect.main: done"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr114343/case3" title="field-get, generics and around advice - 3"> + <compile files="Test.java,TTT.java,TestAspect.java" options="-1.9"/> + <run class="TestAspect"> + <stderr> + <line text="TestAspect.main: Calling foo"/> + <line text="Creating Test<Integer> instance"/> + <line text="Calling toArray"/> + <line text="In around advice"/> + <line text="In toArray()"/> + <line text="done"/> + <line text="Creating Test<Integer> instance"/> + <line text="Calling getFirst"/> + <line text="around on getFirstExec(): running"/> + <line text="done"/> + <line text="TestAspect.main: done"/> + </stderr> + </run> + </ajc-test> + + + <ajc-test dir="bugs150/pr113947/case2" title="maws generic aspect - 2"> + <compile files="AbstractListSupport.java,AnotherItem.java,Item.java,LinkedList.java,LinkedListItem.java,ListItem.java,StringList.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113861" title="field-get problems with generic field"> + <compile files="Test.java,TestAspect.java" options="-1.9"/> + <run class="com.Test"/> + </ajc-test> + + + <ajc-test dir="bugs150/pr99191" title="declare annotation on non existent type - 1"> + <compile files="pr99191_1.java" options="-1.9"> + <message kind="error" line="4" text="The field 'int C.noSuchField' does not exist"/> + <message kind="error" line="5" text="The field 'int B.noSuchField' does not exist"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/bugs/lists/case1" title="generics and ITD overrides - 1"> + <compile files="Identifiable.java,Bean.java,LongIdentifiable.java,IdentifiableAspect.java" options="-1.9"> + </compile> + <run class="IdentifiableAspect"/> + </ajc-test> + + <ajc-test dir="java5/generics/bugs/lists/case2" title="generics and ITD overrides - 2"> + <compile files="Identifiable.java,Bean.java,LongIdentifiable.java,IdentifiableAspect.java" options="-1.9"> + </compile> + <run class="IdentifiableAspect"/> + </ajc-test> + + <ajc-test dir="java5/generics/bugs/lists/case3" title="generics and ITD overrides - 3"> + <compile files="Identifiable.java,Bean.java,LongIdentifiable.java,IdentifiableAspect.java" options="-1.9"> + </compile> + <run class="IdentifiableAspect"/> + </ajc-test> + + <ajc-test dir="java5/generics/bugs/lists/case4" title="generics and ITD overrides - 4"> + <compile files="Identifiable.java,Bean.java,LongIdentifiable.java,IdentifiableAspect.java" options="-1.9"> + </compile> + <run class="IdentifiableAspect"/> + </ajc-test> + + <!-- Currently a warning doesn't occur if the annotation is already on the field + (see bug 113029). If this is fixed, need to add check for this warning to this + test as in test "declare annotation on non existent type - 4" --> + <ajc-test dir="bugs150/pr99191" title="declare annotation on non existent type - 2"> + <compile files="pr99191_2.java" options="-1.9"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr99191" title="declare annotation on non existent type - 3"> + <compile files="pr99191_3.java" options="-1.9"> + <message kind="error" line="4" text="The method 'public * C.noSuchMethod(..)' does not exist"/> + <message kind="error" line="5" text="The method '* B.noSuchMethod(..)' does not exist"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr99191" title="declare annotation on non existent type - 4"> + <compile files="pr99191_4.java" options="-1.9"> + <message kind="warning" text="void C.amethod() - already has an annotation of type Annotation, cannot add a second instance [Xlint:elementAlreadyAnnotated]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr99191" title="declare annotation on non existent type - 5"> + <compile files="pr99191_5.java" options="-1.9"> + <message kind="error" line="4" text="The method 'C.new(java.lang.String)' does not exist"/> + <message kind="error" line="5" text="The method 'B.new(int)' does not exist"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr99191" title="declare annotation on non existent type - 6"> + <compile files="pr99191_6.java" options="-1.9"> + <message kind="warning" text="void C.<init>(int) - already has an annotation of type Annotation, cannot add a second instance [Xlint:elementAlreadyAnnotated]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr113630/case1" title="IncompatibleClassChangeError - errorscenario"> + <compile files="Bean.java,BeanTestCase.java,javaBean.java,propertyChanger.java,PropertySupportAspect5.aj" options="-1.9"> + <message kind="warning" line="9" text="Failing match because annotation 'javaBean' on type 'Bean' has SOURCE retention. Matching allowed when RetentionPolicy is CLASS or RUNTIME"/> + <message kind="error" line="18" text="The method addPropertyChangeListener(String, BeanTestCase) is undefined for the type Bean"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr113630/case2" title="IncompatibleClassChangeError - workingscenario"> + <compile files="Bean.java,BeanTestCase.java,javaBean.java,propertyChanger.java,PropertySupportAspect5.aj" options="-1.9"/> + <run class="BeanTestCase"/> + </ajc-test> + + <ajc-test dir="bugs150" title="Generics ClassCastException"> + <compile files="pr113445.aj" options="-1.9,-emacssym"/> + </ajc-test> + + <ajc-test dir="bugs150" title="test illegal change to pointcut declaration"> + <compile files="pr111915.java" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Join point 'method-execution(void SomeClass.doSomething())' in Type 'SomeClass' (pr111915.java:4) advised by around advice from 'DoesntCompile' (pr111915.java:15)"/> + <message kind="weave" text="Extending interface set for type 'SomeClass' (pr111915.java) to include 'java.io.Serializable' (pr111915.java)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/bridgeMethods" pr="72766" title="Ignore bridge methods"> + <compile files="AspectX.aj" inpath="testcode.jar" options="-showWeaveInfo"> + <!-- <message kind="warning" line="7" text="pointcut did not match on the method call to a bridge method."/> + <message kind="warning" line="7" text="does not match because declaring type is Number"/>--> + <message kind="weave" text="(AspectX.aj:18) advised by before advice from 'AspectX'"/> + <message kind="weave" text="(AspectX.aj:19) advised by before advice from 'AspectX'"/> + <message kind="weave" text="(Number.java:5) advised by before advice from 'AspectX'"/> + </compile> + </ajc-test> + + <ajc-test title="intermediate annotation matching" dir="bugs150"> + <compile files="AnnotationPlusPatternMatchingError.aj" options="-1.9"> + <message kind="warning" line="28" text="matched"/> + </compile> + <run class="AnnotationPlusPatternMatchingError"> + <stdout> + <line text="In advice"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="migration" title="load aspectj 1.2.1 aspects in aspectj 5"> + <compile files="Program.java" aspectpath="aspects121.jar"> + </compile> + <run class="Program"/> + </ajc-test> + + <ajc-test dir="bugs/java5/arrayCloning" pr="72150" vm="1.5" + title="AJC possible bug with static nested classes"> + <compile files="A.java,C.java" options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'C' (C.java:14) advised by around advice from 'A' (A.java:2)"/> + </compile> + <run class="C"/> + </ajc-test> + + <ajc-test dir="java5/pseudoKeywords" + title="method called around in class"> + <compile files="MethodCalledAround.java"> + </compile> + </ajc-test> + + <ajc-test dir="java5/pseudoKeywords" + title="method called around in aspect"> + <compile files="MethodCalledAroundAspect.java"> + <message kind="error" line="2"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="64568" title="clear error message on itd with type pattern"> + <compile files="pr64568.aj"> + <message line="4" kind="error" text="Syntax error on token "*", delete this token"/> + <message line="4" kind="error" text="foo cannot be resolved to a type"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="74562" title="before and after are valid identifiers in classes"> + <compile files="pr74562.aj"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="107486" title="anonymous inner classes"> + <compile files="pr107486.aj"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="102210" title="NullPointerException trying to compile"> + <compile files="PR102210.java"/> + <run class="PR102210"> + <stderr> + <line text="List size is 1"/> + <line text="m1 running"/> + <line text="List size is 2"/> + <line text="m2 running"/> + <line text="List size is 3"/> + <line text="m3 running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="bugs150" pr="107486" title="multiple anonymous inner classes"> + <compile files="pr107486part2.aj"> + </compile> + <run class="pr107486part2"> + <stdout> + <line text="[advised] f"/> + <line text="[advised] g"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/compliance" title="java 5 pointcuts and declares at pre-java 5 compliance levels"> + <compile files="AJ5FeaturesAtJ14.aj" options="-1.4"> + <message kind="error" line="3" text="the @annotation pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="11" text="the @within pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="13" text="the @withincode pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="5" text="the @this pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="7" text="the @target pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="9" text="the @args pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="15" text="declare @type is only supported at Java 5 compliance level or above"/> + <message kind="error" line="15" text="annotations are only available if source level is 1.5 or greater"/> + <message kind="error" line="15" text="cannot convert from Foo to Annotation"/> + <message kind="error" line="17" text="declare @method is only supported at Java 5 compliance level or above"/> + <message kind="error" line="17" text="annotations are only available if source level is 1.5 or greater"/> + <message kind="error" line="17" text="cannot convert from Foo to Annotation"/> + <message kind="error" line="19" text="declare @field is only supported at Java 5 compliance level or above"/> + <message kind="error" line="19" text="annotations are only available if source level is 1.5 or greater"/> + <message kind="error" line="19" text="cannot convert from Foo to Annotation"/> + <message kind="error" line="21" text="declare @constructor is only supported at Java 5 compliance level or above"/> + <message kind="error" line="21" text="annotations are only available if source level is 1.5 or greater"/> + <message kind="error" line="21" text="cannot convert from Foo to Annotation"/> + <message kind="error" line="25" text="annotation type patterns are only supported at Java 5 compliance level or above"/> + <message kind="error" line="27" text="annotation type patterns are only supported at Java 5 compliance level or above"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/compliance" title="java 5 pointcuts and declares at pre-java 5 compliance levels - 1.7"> + <compile files="AJ5FeaturesAtJ14.aj" options="-1.4"> + <message kind="error" line="3" text="the @annotation pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="11" text="the @within pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="13" text="the @withincode pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="5" text="the @this pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="7" text="the @target pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="9" text="the @args pointcut expression is only supported at Java 5 compliance level or above"/> + <message kind="error" line="15" text="declare @type is only supported at Java 5 compliance level or above"/> + <message kind="error" line="15" text="annotations are only available if source level is 1.5 or greater"/> + <message kind="error" line="15" text="Foo is not an annotation type"/> + <message kind="error" line="17" text="declare @method is only supported at Java 5 compliance level or above"/> + <message kind="error" line="17" text="annotations are only available if source level is 1.5 or greater"/> + <message kind="error" line="17" text="Foo is not an annotation type"/> + <message kind="error" line="19" text="declare @field is only supported at Java 5 compliance level or above"/> + <message kind="error" line="19" text="annotations are only available if source level is 1.5 or greater"/> + <message kind="error" line="19" text="Foo is not an annotation type"/> + <message kind="error" line="21" text="declare @constructor is only supported at Java 5 compliance level or above"/> + <message kind="error" line="21" text="annotations are only available if source level is 1.5 or greater"/> + <message kind="error" line="21" text="Foo is not an annotation type"/> + <message kind="error" line="25" text="annotation type patterns are only supported at Java 5 compliance level or above"/> + <message kind="error" line="27" text="annotation type patterns are only supported at Java 5 compliance level or above"/> + </compile> + </ajc-test> + + + <ajc-test dir="bugs150" pr="91114" title="before and after are valid identifiers in classes, part 2"> + <compile files="pr91114.aj"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="78621" title="void field type in pointcut expression"> + <compile files="pr78261.aj"> + <message line="3" kind="error" text="fields cannot have a void type"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="86057" title="overriding final pointcut from super-aspect"> + <compile files="pr86057.aj"> + <message line="9" kind="error" text="can't override final pointcut Base.foo()"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="78707" title="before returning advice not allowed!"> + <compile files="pr78707.aj"> + <message line="3" kind="error" text="Syntax error on token "returning", delete this token"/> + <message line="3" kind="error" text="Syntax error on token "throwing", delete this token"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="104529" title="@SuppressWarnings should suppress"> + <compile files="pr104529.aj" options = "-1.9 -warn:+unchecked"> + <message line="11" kind="warning" text="needs unchecked conversion"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="79523" title="declare warning : foo(str) : ...;"> + <compile files="pr79523.aj"> + <message line="4" kind="warning" text="no match for this type name: str"/> + <message line="4" kind="error" text="bad parameter"/> + <message line="4" kind="error" text="args() pointcut designator cannot be used in declare statement"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="107059" title="parser crashes on call(void (@a *)(..)"> + <compile files="pr107059.aj"> + <message line="3" kind="error" text="Syntax error on token "(", "name pattern" expected"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="107059" title="target(@Foo *)"> + <compile files="pr107059_2.aj" options="-1.9"> + <message kind="error" line="4" text="wildcard type pattern not allowed"></message> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="varargs with type variable"> + <compile files="ParameterizedVarArgMatch.aj" options="-1.9"> + </compile> + </ajc-test> + + + <ajc-test dir="bugs150" pr="108104" title="multiple anonymous inner classes 2"> + <compile files="pr108104.aj" options="-1.9"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="108050" title="signature matching in override scenario"> + <compile files="pr108050.aj" options="-1.9"> + <message kind="warning" line = "2" text="servlet request"></message> + <message kind="warning" line = "7" text="servlet request"></message> + <message kind="warning" line = "21" text="servlet request"></message> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr108425" pr="108245" title="wildcard annotation matching - pr108245"> + <compile files="package1/Bean.java,package2/Bean.java,package2/propertyChanger.java,package3/pr108425.aj" options="-1.9 -Xlint:ignore"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/" pr="108104" title="inner types and type variables"> + <compile files="ShapeCommandMap.java" options="-1.9"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/" pr="107953" title="@AfterThrowing with no formal specified"> + <compile files="pr107953.java" options="-1.9"> + <message kind="error" line="8" text="throwing formal 'RuntimeException' must be declared as a parameter in the advice signature"></message> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr106130" pr="106130" title="test weaving with > 256 locals"> + <compile files="AroundLotsOfVars.java LotsOfVars.java" options="-preserveAllLocals"/> + <run class="LotsOfVars"> + <stdout> + <line text="hello"/> + <line text="2"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr87376" title="structure model npe on type not found"> + <compile files="I.java,NPE.aj" options="-emacssym"> + <message kind="error" line="8" text="I cannot be resolved to a type"/> + <message kind="error" line="10" text="I cannot be resolved to a type"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="83311" title="overriding/polymorphism error on interface method introduction"> + <compile files="pr83311.aj"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="103266" title="NPE on syntax error"> + <compile files="pr103266.aj"> + <message kind="error" line="41" text="ConnectionRequestContext cannot be resolved to a type"/> + <!-- this next message is new in e37 --> + <message kind="error" line="41" text="Type mismatch: cannot convert from new ConnectionRequestContext(){} to WorkerExample.RequestContext"/> + </compile> + </ajc-test> + + <ajc-test title="itd override with no exception clause" dir="bugs150"> + <compile files="pr83377.aj"></compile> + </ajc-test> + + <ajc-test dir="bugs150/pr84260" vm="1.5" title="static import failures"> + <compile files="A.java,I1.java,I2.java" options="-1.9"/> + <run class="I1"> + <stderr> + <line text="static method running"/> + </stderr> + </run> + <run class="I2"> + <stderr> + <line text="static method running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test title="anonymous inner class with method returning type parameter" pr="107898" dir="bugs150"> + <compile files="pr107898.aj" options="-1.9"></compile> + </ajc-test> + + <ajc-test title="matching against Object[]" pr="72668" dir="bugs150"> + <compile files="pr72668.aj" options="-1.9"> + <message kind="error" line="3" text="incompatible return type applying to method-execution(java.lang.Number[] pr72668.getThoseInts())"></message> + <message kind="error" line="10" text="incompatible return type applying to method-execution(java.lang.Number[] pr72668.getThoseInts())"></message> + </compile> + </ajc-test> + + <ajc-test dir="decp" pr="80249" title="Order of types passed to compiler determines weaving behavior"> + <compile files="A.java,B.java,AspectX.java"/> + <run class="B"/> + <compile files="B.java,A.java,AspectX.java"/> + <run class="B"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="99228" vm="1.5" title="ITD of a field into a generic class"> + <compile files="PR99228.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="98320" vm="1.5" title="intertype with nested generic type"> + <compile files="PR98320.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="decs" pr="42743" title="declare soft of runtime exception"> + <compile files="DeclareSoftRuntimeException.aj"> + <message kind="warning" line="3" text="MyRuntimeException will not be softened as it is already a RuntimeException"/> + </compile> + <run class="DeclareSoftRuntimeException"> + <stdout> + <line text="MyRuntimeException"/> + <line text="org.aspectj.lang.SoftException"/> + <line text="MyRuntimeException"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="decs" pr="42743" title="declare soft w. catch block"> + <compile files="VerifyError.aj" options="-Xlint:ignore"> + </compile> + <run class="VerifyError"/> + </ajc-test> + + <ajc-test dir="bugs" pr="61568" title="Various kinds of ambiguous bindings"> + <compile files="AmbiguousBindings.aj"> + <message line="17" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> + <message line="19" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> + <message line="21" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> + <message line="23" text="ambiguous binding of parameter(s) x across '||' in pointcut"></message> + <message line="25" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> + </compile> + </ajc-test> + + <ajc-test dir="bugs" pr="61658" title="ambiguous args"> + <compile files="PR61658.java"> + <message line="17" text="ambiguous binding of parameter(s) a, b across '||' in pointcut"></message> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="78021" title="Injecting exception into while loop with break statement causes catch block to be ignored"> + <compile files="PR78021.java"/> + <run class="PR78021"/> + </ajc-test> + + <ajc-test dir="bugs150/pr99089" vm="1.5" pr="99089" title="ArrayIndexOutOfBoundsException - Generics in privileged aspects"> + <compile files="DataClass.java,TracingAspect.java" options="-1.9"/> + <run class="DataClass"> + <stderr> + <line text="before:Length of v=1"/> + <line text="after:Length of v=2"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="bugs150" pr="79554" title="Return in try-block disables catch-block if final-block is present"> + <compile files="PR79554.java"/> + <run class="PR79554"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="82570" title="Weaved code does not include debug lines"> + <compile files="PR82570_1.java"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="83303" title="compiler error when mixing inheritance, overriding and polymorphism"> + <compile files="PR83303.java"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="83563" title="pertypewithin() handing of inner classes (1)"> + <compile files="PR83563_1.java"/> + <run class="PR83563_1"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="83563" title="pertypewithin() handing of inner classes (2)"> + <compile files="PR83563_2.java"/> + <run class="PR83563_2"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="83645" title="pertypewithin({interface}) illegal field modifier"> + <compile files="PR83645.java" options="-Xlint:ignore"/> + <run class="PR83645"/> + </ajc-test> + + <ajc-test dir="bugs150" title="bad asm for enums" vm="1.5"> + <compile files="Rainbow.java" options="-emacssym,-1.9,-Xset:minimalModel=false"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="10461" title="missing name pattern"> + <compile files="PR106461.aj"> + <message kind="error" line="3" text="Syntax error on token "(", "name pattern" expected"/> + <message kind="error" line="5" text="Syntax error on token ")", "name pattern" expected"/> + <message kind="error" line="7" text="Syntax error on token ".", "name pattern" expected"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="106634" title="IllegalStateException unpacking signature of nested parameterized type"> + <compile files="pr106634.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" title="(@Foo *)+ type pattern parse error"> + <compile files="AnnotationPlusPatternParseError.aj" options="-1.9"/> + <!-- next line needs the change for inherited anno matching... --> + <!--compile files="AnnotationPlusPatternParseError.aj" options="-1.9"> + <message kind="warning" line="19"/> + </compile--> + </ajc-test> + + <ajc-test dir="bugs150" pr="80571" title="around advice on interface initializer"> + <compile files="pr80571.aj"> + <message kind="warning" text="The joinpoint 'constructor-call(void pr80571.<init>())' cannot be advised"/> + </compile> + <run class="pr80571"> + <stdout> + <line text="before"/> + <line text="after"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" pr="78314" title="good error message for unmatched member syntax"> + <compile files="pr78314.aj" options="-1.9"> + <message kind="error" line="5" text="Syntax error on token "foo", no accurate correction available"/> + </compile> + <compile files="pr78314.aj"> + <message kind="error" line="5" text="Syntax error on token "foo", no accurate correction available"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="108377" title="itd field access inside itd method"> + <compile files="pr108377.aj"/> + <run class="pr108377"/> + </ajc-test> + + <ajc-test dir="bugs150/pr108054" pr="108054" title="type variable with type variable bound"> + <compile files="pr108054.aj" options="-1.9"/> + <compile files="ISequence.java,ICounter.java,ASequence.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr108370" pr="108370" title="switch on enum inside ITD method"> + <compile files="et/Q.java" options="-1.9"/> + <compile files="EnumTest.aj" options="-1.9 -inpath et"/> + <run class="EnumTest"> + <stdout> + <line text="B!"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" pr="95992" title="inner type of generic interface reference from parameterized type"> + <compile files="pr95992.aj" options="-1.9"/> + </ajc-test> + + + <ajc-test dir="bugs150" pr="104024" title="inner class passed as argument to varargs method"> + <compile files="pr104024.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="107858" title="inlined field access in proceed call"> + <compile files="pr107858.aj" options="-1.9"> + <message kind="error" line="9" text="too many arguments to proceed, expected 0"></message> + <message kind="error" line="10" text="too many arguments to proceed, expected 0"></message> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr71159" pr="71159" title="visibility in signature matching with overrides - 1"> + <compile files="pr71159.aj"> + <message kind="warning" line="26" text="should match"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr71159" pr="71159" title="visibility in signature matching with overrides - 2"> + <compile files="PrivateITD.aj"> + <message kind="warning" line="28" text="should match"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr71159" pr="71159" title="visibility in signature matching with overrides - 3"> + <compile files="pkg1/A.java,pkg1/B.java,pkg1/C.java,pkg2/ITDInDiffPackage.aj"> + <message kind="warning" line="10" text="should match"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="59196" title="args generated correctly for advice execution join point"> + <compile files="pr59196.aj" options="-XnoInline -1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="74048" title="no unused warnings on aspect types"> + <compile files="pr74048.aj" options="-warn:unusedPrivate"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="59397" title="synthetic arguments on itd cons are not used in matching"> + <compile files="pr59397.aj"> + <message line="6" kind="warning" text="should match"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="108602" title="parse generic type signature with parameterized type in interface"> + <compile files="pr108602.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="105479" title="declare parents introducing override with covariance"> + <compile files="pr105479.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="105479" title="override and covariance with decp - runtime"> + <compile files="pr105479part2.aj" options="-1.9"/> + <run class="pr105479part2"> + <stdout> + <line text="in Test.hashCode()"/> + <line text="in Test.hashCode()"/> + <line text="id"/> + <line text="in Test.hashCode()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr105479/case1" pr="105479" title="override and covariance with decp - runtime separate files"> + <compile files="ReturnTypeTest.aj,ReturnTypeTester.java,Driver.java" options="-1.9"/> + <run class="Driver"> + <stdout> + <line text="in Test.hashCode()"/> + <line text="in Test.hashCode()"/> + <line text="id"/> + <line text="in Test.hashCode()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr105479/case2" pr="105479" title="override and covariance with decp - binary weaving"> + <compile files="ReturnTypeTest.java" outjar="jar1.jar" options="-1.9 -Xlint:ignore"/> + <compile files="ReturnTypeTester.java" outjar="jar2.jar" options="-1.9"/> + <compile inpath="jar1.jar;jar2.jar" options="-1.9"/> + <run class="ReturnTypeTester"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="102212" title="abstract synchronized itdms not detected"> + <compile files="pr102212.aj"> + <message line="7" kind="error" text="The abstract method _abstract in type Parent can only set a visibility modifier, one of public or protected"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="102212" title="synchronized itd interface methods"> + <compile files="SynchronizedInterfaceMethods.aj" options="-1.9"> + </compile> + <run class="SynchronizedInterfaceMethods"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="101606" title="unused private pointcuts"> + <compile files="pr101606.aj" options="-warn:unusedPrivate"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr99125" pr="99125" title="itd interface method already existing on interface"> + <compile files="p/pr99125.aj,p/I.java,p/J.java" options="-1.9"> + </compile> + <compile files="Aspects.aj" options="-inpath p"/> + <run class="p.pr99125"/> + <compile files="p2/pr99125.aj,p/I.java,p/J.java"/> <!-- actually in package p, introduces incompatible change --> + <compile files="Aspects.aj" options="-inpath p"> + <message kind="error" line="7" text="inter-type declaration from X conflicts with existing member"/> + <!-- 275032 - new error at affected member location too --> + <message kind="error" line="10" text="inter-type declaration from X conflicts with existing member"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr87530" pr="87530" title="final itd methods on interfaces"> + <compile files="FinalITDMOnInterface.aj"> + <message kind="error" line="12" text="Cannot override the final method from A.TestInterface"></message> + </compile> + <compile files="FinalITDMOnInterface2.aj"> + <!--message kind="error" line="8" text="Cannot override the final method from A.TestInterface"></message--> + <message kind="error" line="8" text="can't override final void A$TestInterface.m()"></message> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="108818" title="can't override private pointcut in abstract aspect"> + <compile files="PrivatePointcutOverriding.aj"> + <message kind="warning" line="19" text="matched join point from super advice"/> + <message kind="warning" line="21" text="matched join point from sub advice"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="108816" title="advising cflow advice execution"> + <compile files="pr108816.aj" > + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr108902" pr="108902" title="no type mismatch on generic types in itds"> + <compile files="Subject.java,Observer.java,ObserverProtocol.aj" > + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="108903" title="super call in ITD"> + <compile files="pr108903.aj" > + <message kind="error" line="14" text="The method print() is undefined for the type Object"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="109042" title="no unused parameter warnings for synthetic advice args"> + <compile files="pr109042.aj" options="-warn:+unusedArgument -warn:+unusedPrivate -warn:+unusedImport -1.9"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="109486" title="Internal compiler error (ClassParser.java:242)"> + <compile files="PR109486.java" > + <message kind="error" line="1" text="The class PR109486 can be either abstract or final, not both"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="109124" title="no verify error with set on inner type"> + <compile files="VerifyErrorOnSet.aj" options="-1.9" > + </compile> + <run class="test.VerifyErrorOnSet"/> + <compile files="pr106874.aj" options="-1.9" > + </compile> + <run class="pr106874"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="108826" title="cant find type error with generic return type or parameter"> + <compile files="pr108826.aj" options="-1.9 -emacssym" > + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="105181" title="no verify error on generic collection member access"> + <compile files="pr105181.aj" options="-1.9"> + </compile> + <run class="pr105181"/> + </ajc-test> + + <ajc-test dir="bugs150/pr108903" pr="108903" title="super call in ITD - part 2"> + <compile files="com/designpattern/decorator/HeaderDecorator.aj,com/designpattern/decorator/Main.java,com/designpattern/decorator/Order.java,com/designpattern/decorator/OrderDecorator.aj,com/designpattern/decorator/SalesOrder.java" options="-1.9" > + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr103740" pr="103740" title="Compiler failure on at_annotation"> + <compile files="AroundAdvice.aj" options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Join point 'method-execution(void C.m1())' in Type 'C' (AroundAdvice.aj:12) advised by before advice from 'ErrorHandling' (AroundAdvice.aj:8)"/> + <message kind="weave" text="Join point 'method-execution(void C.m3())' in Type 'C' (AroundAdvice.aj:14) advised by before advice from 'ErrorHandling' (AroundAdvice.aj:8)"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr106554" pr="106554" title="Problem in staticinitialization with pertypewithin aspect"> + <compile files="A.aj" options="-showWeaveInfo"> + <message kind="weave" text="Join point 'staticinitialization(void A.<clinit>())' in Type 'A' (A.aj:1) advised by before advice from 'StopsInit' (A.aj:21)"/> + </compile> + <run class="A"> + <stdout> + <line text="test = 1"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/SimpleInsuranceFailure" title="raw and generic type conversion with itd cons"> + <compile files="" options=" -emacssym, -sourceroots ." > + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="@annotation binding with around advice"> + <compile files="AnnotationBinding.aj" options="-1.9"/> + <run class="AnnotationBinding"/> + </ajc-test> + + <ajc-test dir="bugs150" title="declare parents on a missing type"> + <compile files="Pr76374.aj" options="-1.9"> + <message kind="warning" line="3" text="no match for this type name"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="parameterized generic methods"> + <compile files="Pr109283.aj" options="-1.9 -warn:indirectStatic"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="call join points in anonymous inner classes"> + <compile files="pr104229.aj" options="-1.9"> + <message kind="warning" line="54" text="bingo"/> + <message kind="warning" line="115" text="bingo"/> + <message kind="warning" line="130" text="bingo"/> + </compile> + <run class="pr104229"> + <stdout> + <line text="call match class pr104229"/> + <line text="OK it worked!"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" title="default impl of Runnable"> + <compile files="pr88900.aj" options="-Xdev:Pinpoint"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="array clone call join points in 1.4 vs 1.3"> + <compile files="pr102933.aj" options="-1.3"> + <message kind="warning" line="7" text="a call within pr102933"/> + </compile> + <compile files="pr102933.aj" options="-1.4"> + <message kind="warning" line="7" text="a call within pr102933"/> + </compile> + <compile files="pr102933.aj" options="-1.9"> + <message kind="warning" line="7" text="a call within pr102933"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" pr="100195" title="debug info in around advice inlining"> + <compile files="pr100195.aj"> + </compile> + <run class="pr100195"/> + </ajc-test> + + <ajc-test dir="bugs150" title="weaveinfo message for declare at method on an ITDd method"> + <compile files="pr113073.java" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Type 'C' (pr113073.java) has intertyped method from 'D' (pr113073.java:'void C.anotherMethod()')"/> + <message kind="weave" text="'public void C.anotherMethod()' (pr113073.java) is annotated with @Annotation method annotation from 'B' (pr113073.java:3)"/> + <message kind="weave" text="Type 'C' (pr113073.java) has intertyped method from 'D' (pr113073.java:'void C.anotherMethod(java.lang.String)')"/> + <message kind="weave" text="'public void C.anotherMethod(String)' (pr113073.java) is annotated with @Annotation method annotation from 'B' (pr113073.java:3)"/> + <message kind="weave" text="Type 'C' (pr113073.java) has intertyped constructor from 'D' (pr113073.java:'void C."/> + <message kind="weave" text="'public void C.new(String)' (pr113073.java) is annotated with @Annotation constructor annotation from 'B' (pr113073.java:4)"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr113447" title="no verify error with two this pcds"> + <compile files="PR113447.java"> + </compile> + <run class="PR113447"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113447" title="no verify error with two at this pcds"> + <compile files="PR113447a.java" options="-1.9"> + </compile> + <run class="PR113447a"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113447" title="no verify error with at within pcds"> + <compile files="PR113447b.java" options="-1.9"> + </compile> + <run class="PR113447b"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113447" title="no verify error with at withincode pcds"> + <compile files="PR113447c.java" options="-1.9"> + </compile> + <run class="PR113447c"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113447" title="no verify error with at annotation pcds"> + <compile files="PR113447d.java" options="-1.9"> + </compile> + <run class="PR113447d"/> + </ajc-test> + + <ajc-test dir="bugs150/pr113447" title="no verify error with two args pcds"> + <compile files="PR113447e.java" options="-1.9"> + </compile> + <run class="PR113447e"/> + </ajc-test> + + <ajc-test dir="bugs150" title="no StackOverflowError with circular pcd in generic aspect"> + <compile files="pr115235.aj" options="-1.9"> + <message kind="warning" line="3" text="advice defined in GenericAbstractAspect has not been applied [Xlint:adviceDidNotMatch]"/> + <message kind="error" text="circular pointcut declaration involving: pc()"/> + <message kind="error" line="20" text="circular pointcut declaration involving: pc2()"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="no StackOverflowError with circular pcd in generic aspect - 2"> + <compile files="pr115235b.aj" options="-1.9"> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr115252" title="xlint message for improper exact annotation type"> + <compile files="ExactAnnotationTypePattern.java" options="-1.9"> + <message kind="warning" line="20" text="field blah"/> + <message kind="warning" line="28" text="does not match because annotation @TypeAnnotation has @Target{ElementType.TYPE} [Xlint:unmatchedTargetKind]"/> + <message kind="warning" line="37" text="does not match because annotation @FieldAnnotation has @Target{ElementType.FIELD} [Xlint:unmatchedTargetKind]"/> + <message kind="warning" line="46" text="does not match because annotation @MethodAnnotation has @Target{ElementType.METHOD} [Xlint:unmatchedTargetKind]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr115252" title="xlint message for improper annotation type inside OR"> + <compile files="OrTypePattern.java" options="-1.9"> + <message kind="warning" line="26" text="does not match because annotation @FieldAnnotation has @Target{ElementType.FIELD} [Xlint:unmatchedTargetKind]"/> + <message kind="warning" line="31" text="does not match because annotation @TypeAnnotation has @Target{ElementType.TYPE} [Xlint:unmatchedTargetKind]"/> + <message kind="warning" line="31" text="does not match because annotation @FieldAnnotation has @Target{ElementType.FIELD} [Xlint:unmatchedTargetKind]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr115252" title="xlint message for improper annotation type inside AND"> + <compile files="AndTypePattern.java" options="-1.9"> + <message kind="warning" line="23" text="does not match because annotation @FieldAnnotation has @Target{ElementType.FIELD} [Xlint:unmatchedTargetKind]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr115252" title="xlint message for improper annotated return type"> + <compile files="AnnotationReturnType.java" options="-1.9"> + <!-- warnings coming from matching pointcuts and corresponding declare warnings --> + <message kind="warning" line="12" text="(@TypeAnnotation *) *(..)"/> + <message kind="warning" line="12" text="(@(TypeAnnotation || MethodAnnotation) *) *(..)"/> + <!-- xlint warnings that were put in as part of fix for pr115252 --> + <message kind="warning" line="32" text="does not match because annotation @MethodAnnotation has @Target{ElementType.METHOD} [Xlint:unmatchedTargetKind]"/> + <message kind="warning" line="37" text="does not match because annotation @MethodAnnotation has @Target{ElementType.METHOD} [Xlint:unmatchedTargetKind]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr115252" title="xlint message for improper annotated declaring type"> + <compile files="AnnotationDeclaringType.java" options="-1.9"> + <!-- warning coming from matching pointcuts and corresponding declare warnings --> + <message kind="warning" line="13" text="* (@TypeAnnotation *).*(..)"/> + <!-- xlint warning that was put in as part of fix for pr115252 --> + <message kind="warning" line="27" text="does not match because annotation @MethodAnnotation has @Target{ElementType.METHOD} [Xlint:unmatchedTargetKind]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr115252" title="xlint message for improper annotated parameter type"> + <compile files="AnnotationParameterType.java" options="-1.9"> + <!-- warning coming from matching pointcuts and corresponding declare warnings --> + <message kind="warning" line="12" text="* *(@TypeAnnotation *)"/> + <!-- xlint warning that was put in as part of fix for pr115252 --> + <message kind="warning" line="31" text="does not match because annotation @MethodAnnotation has @Target{ElementType.METHOD} [Xlint:unmatchedTargetKind]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr115252" title="xlint message for improper annotated throws pattern"> + <compile files="AnnotationThrowsPattern.java" options="-1.9"> + <!-- warnings coming from matching pointcuts and corresponding declare warnings --> + <message kind="warning" line="12" text="(* *.*(..) throws (@TypeAnnotation *))"/> + <message kind="warning" line="12" text="* *.*(..) throws !(@MethodAnnotation *)"/> + <message kind="warning" line="14" text="(* *.*(..) throws !(@TypeAnnotation *))"/> + <message kind="warning" line="14" text="* *.*(..) throws !(@MethodAnnotation *)"/> + <!-- xlint warnings that were put in as part of fix for pr115252 --> + <message kind="warning" line="40" text="does not match because annotation @MethodAnnotation has @Target{ElementType.METHOD} [Xlint:unmatchedTargetKind]"/> + <message kind="warning" line="46" text="does not match because annotation @MethodAnnotation has @Target{ElementType.METHOD} [Xlint:unmatchedTargetKind]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr115252" title="xlint message for more than one improper annotated parameter type"> + <compile files="MoreThanOneTargetAnnotation.java" options="-1.9"> + <!-- xlint warning that was put in as part of fix for pr115252 --> + <message kind="warning" line="28" text="does not match because annotation @MethodAndFieldAnnotation has @Target{ElementType.FIELD,ElementType.METHOD} [Xlint:unmatchedTargetKind]"/> + <message kind="warning" line="38" text="does not match because annotation @TypeAndMethodAnnotation has @Target{ElementType.METHOD,ElementType.TYPE} [Xlint:unmatchedTargetKind]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr119019" title="no NPE when inaccessible method is called within itd"> + <compile files="bar/TargetITDClass.java,foo/ITDWithACall.aj"/> + <run class="foo.ITDWithACall"/> + </ajc-test> + + <ajc-test dir="bugs150" title="no NPE with or pointcut and more than one args"> + <compile files="PR118149.aj"/> + </ajc-test> + + <ajc-test dir="bugs150" title="no StringOutOfBoundsException with generic inner aspects"> + <compile files="PR119543.java" options="-1.9"> + <message kind="warning" line="8" text="advice defined in PR119543$A has not been applied [Xlint:adviceDidNotMatch]"/> + </compile> + </ajc-test> + + <!-- ============================================================================ --> + <!-- ============================================================================ --> + + <!-- atOverride tests with ITDs --> + + <ajc-test dir="java5/generics/itds" pr="106630" title="atOverride used with ITDs"> + <compile files="AtOverride.aj" options="-1.9"/> + </ajc-test> + <ajc-test dir="java5/generics/itds" pr="106630" title="atOverride used with ITDs - 1"> + <compile files="AtOverride1.aj" options="-1.9"> + <message kind="error" line="9" text="The method method() of type Child must override a superclass method"/> + </compile> + </ajc-test> + <ajc-test dir="java5/generics/itds" pr="106630" title="atOverride used with ITDs - 2"> + <compile files="AtOverride2.aj" options="-1.9"/> + </ajc-test> + <ajc-test dir="java5/generics/itds" pr="106630" title="atOverride used with ITDs - 3"> + <compile files="AtOverride3.aj" options="-1.9"/> + </ajc-test> + <ajc-test dir="java5/generics/itds" pr="106630" title="atOverride used with ITDs - 4"> + <compile files="AtOverride4.aj" options="-1.9"/> + </ajc-test> + <ajc-test dir="java5/generics/itds" pr="106630" title="atOverride used with ITDs - 5"> + <compile files="AtOverride5.aj" options="-1.9"> + <message kind="error" line="11" text="The method method() of type Child must override a superclass method"/> + </compile> + </ajc-test> + <ajc-test dir="java5/generics/itds" pr="106630" title="atOverride used with ITDs - 6"> + <compile files="AtOverride6.aj" options="-1.9"/> + </ajc-test> + <ajc-test dir="java5/generics/itds" pr="106630" title="atOverride used with ITDs - 7"> + <compile files="AtOverride7.aj" options="-1.9"/> + </ajc-test> + + <!-- end of atOverride tests with ITDs --> + + <ajc-test dir="../docs/dist/doc/examples/introduction" title="introduction sample" vm="1.5"> + <compile files="CloneablePoint.java,ComparablePoint.java,HashablePoint.java,Point.java" options="-1.9 -Xlint:ignore"/> + </ajc-test> + + <ajc-test dir="java5/varargs" title="varargs in constructor sig" vm="1.5"> + <compile files="Pr88652.aj" options="-1.9"> + <message kind="warning" line="8" text="should match"/> + <message kind="warning" line="9" text="should match"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/varargs" title="Varargs with .. in pointcut" vm="1.5"> + <compile files="pr93356.aj" options="-1.9"> + <message kind="warning" line="5" text="a"/> + <message kind="warning" line="5" text="b"/> + <message kind="warning" line="5" text="c"/> + <message kind="warning" line="5" text="d"/> + <message kind="warning" line="5" text="e"/> + <message kind="warning" line="5" text="k"/> + <message kind="warning" line="5" text="l"/> + + <message kind="warning" line="4" text="f"/> + <message kind="warning" line="4" text="g"/> + <message kind="warning" line="4" text="h"/> + <message kind="warning" line="4" text="i"/> + <message kind="warning" line="4" text="j"/> + + <message kind="warning" line="7" text="f"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/varargs" title="star varargs pattern" vm="1.5"> + <compile files="StarVarargsPattern.aj" options="-1.9"> + <message kind="warning" line="5" text="you used a varargs signature"/> + <message kind="warning" line="7" text="you used a varargs signature"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations" title="invalid cons syntax" vm="1.5"> + <compile files="SyntaxError.aj" options="-1.9"> + <message kind="error" line="3" text="Syntax error on token "new", "method name (not constructor)" expected"/> + </compile> + </ajc-test> + + <!-- hasmethod / hasfield tests --> + + <ajc-test title="declare parents : hasmethod(..) - 1" dir="hasmember"> + <compile files="HasMethod.aj"> + <message kind="error" line="5" text="the type pattern hasmethod(* print(..)) can only be used when the -XhasMember option is set"/> + </compile> + </ajc-test> + + <ajc-test title="declare parents : hasmethod(..) - 1" dir="hasmember"> + <compile files="HasMethod.aj" options="-XhasMember"> + </compile> + <run class="HasMethod"></run> + </ajc-test> + + <ajc-test title="declare parents : hasmethod(..) - 2" dir="hasmember"> + <compile files="HasMethodInherited.aj" options="-XhasMember"> + </compile> + <run class="HasMethodInherited"></run> + </ajc-test> + + <ajc-test title="declare parents : hasmethod(..) - 3" dir="hasmember"> + <compile files="HasPrivateMethodInherited.aj" options="-XhasMember"> + </compile> + <run class="HasPrivateMethodInherited"></run> + </ajc-test> + + <ajc-test title="declare parents : hasmethod(..) - 4" dir="hasmember"> + <compile files="HasMethodViaITD.aj" options="-XhasMember"> + <message kind="warning" line="15" text="hasmethod matched on ITD ok"/> + </compile> + </ajc-test> + + <ajc-test title="declare parents : hasfield(..) - 1" dir="hasmember"> + <compile files="HasField.aj" options="-XhasMember"> + </compile> + <run class="HasField"></run> + </ajc-test> + + <ajc-test title="declare parents : hasfield(..) - 2" dir="hasmember"> + <compile files="HasFieldInherited.aj" options="-XhasMember"> + </compile> + <run class="HasFieldInherited"></run> + </ajc-test> + + <ajc-test title="declare parents : hasfield(..) - 3" dir="hasmember"> + <compile files="HasPrivateFieldInherited.aj" options="-XhasMember"> + </compile> + <run class="HasPrivateFieldInherited"></run> + </ajc-test> + + <!-- Annotation binding tests --> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="call annotation binding 1"> + <compile files="CallAnnBinding.aj" options="-1.9"/> + <run class="CallAnnBinding"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="call annotation binding 2"> + <compile files="CallAnnBinding2.aj" options="-1.9"/> + <run class="CallAnnBinding2"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="call annotation binding 3"> + <compile files="CallAnnBinding3.aj" options="-1.9"/> + <run class="CallAnnBinding3"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="call annotation binding 4"> + <compile files="CallAnnBinding4.aj" options="-1.9"/> + <run class="CallAnnBinding4"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="call annotation binding 5"> + <compile files="CallAnnBinding5.aj" options="-1.9"/> + <run class="CallAnnBinding5"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="call annotation binding 6"> + <compile files="CallAnnBinding6.aj" options="-1.9"/> + <run class="CallAnnBinding6"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="call annotation binding 7"> + <compile files="CallAnnBinding7.aj" options="-1.9"/> + <run class="CallAnnBinding7"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@target annotation binding 1"> + <compile files="AtTarget1.aj" options="-1.9"/> + <run class="AtTarget1"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@target annotation binding 2"> + <compile files="AtTarget2.aj" options="-1.9"/> + <run class="AtTarget2"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@target annotation binding 3"> + <compile files="AtTarget3.aj" options="-1.9"/> + <run class="AtTarget3"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@target annotation binding 4"> + <compile files="AtTarget4.aj" options="-1.9"/> + <run class="AtTarget4"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding/usingPackageNames" vm="1.5" title="@target annotation binding 5"> + <compile files="MyAspect.aj,MyAnnotation.java,MyClass.java" options="-1.9"/> + <run class="test.MyClass"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@this annotation binding 1"> + <compile files="AtThis1.aj" options="-1.9"/> + <run class="AtThis1"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@this annotation binding 2"> + <compile files="AtThis2.aj" options="-1.9"/> + <run class="AtThis2"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@this annotation binding 3"> + <compile files="AtThis3.aj" options="-1.9"/> + <run class="AtThis3"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@this annotation binding 4"> + <compile files="AtThis4.aj" options="-1.9"/> + <run class="AtThis4"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@this annotation binding 5"> + <compile files="AtThis5.aj" options="-1.9"/> + <run class="AtThis5"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@args annotation binding 1"> + <compile files="AtArgs1.aj" options="-1.9"/> + <run class="AtArgs1"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@args annotation binding 2"> + <compile files="AtArgs2.aj" options="-1.9"/> + <run class="AtArgs2"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@args annotation binding 3"> + <compile files="AtArgs3.aj" options="-1.9"/> + <run class="AtArgs3"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@args annotation binding 4"> + <compile files="AtArgs4.aj" options="-1.9"/> + <run class="AtArgs4"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@args annotation binding 5"> + <compile files="AtArgs5.aj" options="-1.9"/> + <run class="AtArgs5"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="execution and @annotation"> + <compile files="ExecutionAnnBinding1.aj" options="-1.9"/> + <run class="ExecutionAnnBinding1"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="set and @annotation"> + <compile files="FieldAnnBinding1.aj" options="-1.9"/> + <run class="FieldAnnBinding1"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="get and @annotation"> + <compile files="FieldAnnBinding2.aj" options="-1.9"/> + <run class="FieldAnnBinding2"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="get and @annotation with arrays"> + <compile files="FieldAnnBinding3.aj" options="-1.9"/> + <run class="FieldAnnBinding3"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="cons call and @annotation"> + <compile files="CtorAnnBinding1.aj" options="-1.9"/> + <run class="CtorAnnBinding1"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="cons exe and @annotation"> + <compile files="CtorAnnBinding2.aj" options="-1.9"/> + <run class="CtorAnnBinding2"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="staticinit and @annotation"> + <compile files="StaticInitBinding.aj" options="-1.9"/> + <run class="StaticInitBinding"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="preinit and @annotation"> + <compile files="PreInitBinding.aj" options="-1.9"/> + <run class="PreInitBinding"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="init and @annotation"> + <compile files="InitBinding.aj" options="-1.9"/> + <run class="InitBinding"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="adviceexecution and @annotation"> + <compile files="AdviceExecBinding.aj" options="-1.9"/> + <run class="AdviceExecBinding"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="handler and @annotation"> + <compile files="HandlerBinding.aj" options="-1.9"/> + <run class="HandlerBinding"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@withincode() and call(* println(..))"> + <compile files="WithinCodeBinding1.aj" options="-1.9"/> + <run class="WithinCodeBinding1"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@within"> + <compile files="WithinBinding1.aj" options="-1.9"/> + <run class="WithinBinding1"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="@within - multiple types"> + <compile files="WithinBinding2.aj" options="-1.9"/> + <run class="WithinBinding2"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding/complexExample" vm="1.5" title="packages and no binding"> + <compile files="A.java,B.java,Color.java,X.java" options="-1.9"/> + <run class="a.b.c.A"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding/complexExample" vm="1.5" title="packages and binding"> + <compile files="A.java,B.java,Color.java,X2.java" options="-1.9"/> + <run class="a.b.c.A"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" vm="1.5" title="binding with static methods"> + <compile files="StaticMethods.java" options="-1.9"/> + <run class="StaticMethods"/> + </ajc-test> + + <ajc-test dir="java5/annotations" vm="1.5" title="annotation matching on call"> + <weave classesFiles="AnnotatedType.java,SimpleAnnotation.java,SimpleAnnotation2.java" + aspectsFiles="AnnotationAspect02.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'AnnotatedType' (AnnotatedType.java:3) advised by before advice from 'AnnotationAspect02' (aspects.jar!AnnotationAspect02.class:4(from AnnotationAspect02.aj))"/> + <message kind="weave" text="Type 'AnnotatedType' (AnnotatedType.java:3) advised by before advice from 'AnnotationAspect02' (aspects.jar!AnnotationAspect02.class:2(from AnnotationAspect02.aj))"/> + <message kind="weave" text="Type 'AnnotatedType' (AnnotatedType.java:4) advised by before advice from 'AnnotationAspect02' (aspects.jar!AnnotationAspect02.class:4(from AnnotationAspect02.aj))"/> + </weave> + </ajc-test> + + <ajc-test dir="java5/annotations" vm="1.5" title="at annotation matching"> + <weave classesFiles="AnnotatedType.java,SimpleAnnotation.java,SimpleAnnotation2.java" + aspectsFiles="AnnotationAspect03.aj" + options="-1.9,-showWeaveInfo"> + <message kind="warning" line="8" text="@annotation matched here"/> + </weave> + </ajc-test> + + <ajc-test dir="java5/annotations/within_code" vm="1.5" title="annotations and within(code)"> + <weave classesFiles="TestingAnnotations.java" + aspectsFiles="WithinAndWithinCodeTests.java" + options="-1.9,-showWeaveInfo"> + <message kind="warning" line="31" text="@within match on non-inherited annotation"/> + <message kind="warning" line="39" text="@within match on non-inherited annotation"/> + <message kind="warning" line="39" text="@within match on inheritable annotation"/> + <message kind="warning" line="43" text="@within match on inheritable annotation"/> + <message kind="warning" line="32" text="@withincode match"/> + </weave> + </ajc-test> + + <ajc-test dir="java5/annotations/within" vm="1.5" title="annotations and within"> + <weave classesFiles="PlainWithin.java" + aspectsFiles="PlainWithinTests.java" + options="-1.9,-showWeaveInfo"> + <message kind="warning" line="21" text="positive within match on annotation"/> + <message kind="warning" line="25" text="negative within match on annotation"/> + </weave> + </ajc-test> + + <ajc-test dir="java5/annotations/thisOrtarget" vm="1.5" title="must have runtime retention"> + <compile options="-1.9" files="NotRuntimeRetention.aj"> + <message kind="error" line="20" text="Annotation type MySourceAnnotation does not have runtime retention"/> + <message kind="error" line="21" text="Annotation type MyClassAnnotation does not have runtime retention"/> + <message kind="error" line="22" text="Annotation type MyAnnotation does not have runtime retention"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/thisOrtarget" vm="1.5" title="inheritable or not"> + <compile options="-1.9" files="TestingAnnotations.java,ThisOrTargetTests.aj"> + </compile> + <run class="TestingAnnotations"/> + </ajc-test> + + <ajc-test dir="java5/annotations/thisOrtarget" vm="1.5" title="use of @this/target in deow"> + <compile options="-1.9" files="TestingAnnotations.java,DeclareEoW.java"> + <message kind="error" line="3" text="this() pointcut designator cannot be used in declare statement"/> + <message kind="error" line="5" text="target() pointcut designator cannot be used in declare statement"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/args" vm="1.5" title="@args tests"> + <compile options="-1.9" files="TestingArgsAnnotations.java,AtArgsAspect.java"> + </compile> + <run class="TestingArgsAnnotations"/> + </ajc-test> + + <ajc-test dir="java5/annotations/args" vm="1.5" title="use of @args in deow"> + <compile options="-1.9" files="TestingArgsAnnotations.java,DeclareEoW.java"> + <message kind="error" line="3" text="args() pointcut designator cannot be used in declare statement"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations" vm="1.5" title="compiling an annotation"> + <compile options="-1.9" files="SimpleAnnotation.java"> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations" vm="1.5" title="compiling annotated file"> + <compile options="-1.9" files="SimpleAnnotation.java,AnnotatedType.java"> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/within" vm="1.5" title="annotations and within (src)"> + <compile files="PlainWithin.java,PlainWithinTests.java" + aspectsFiles="PlainWithinTests.java" + options="-1.9"> + <message kind="warning" line="21" text="positive within match on annotation"/> + <message kind="warning" line="25" text="negative within match on annotation"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/attarget" vm="1.5" title="losing annotations..."> + <compile options="-1.9" files="Program.java,AtTargetAspect.java"> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations" vm="1.5" title="no itds on annotation types"> + <compile files="AnnotatedType.java,SimpleAnnotation.java,SimpleAnnotation2.java,AnnotationAspect01.aj" + options="-1.9"> + <message kind="error" line="4" text="can't make inter-type constructor declarations"/> + <message kind="error" line="8" text="can't make inter-type method declarations"/> + <message kind="error" line="13" text="can't make inter-type field declarations"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations" vm="1.5" title="no declare parents on annotation types"> + <compile files="AnnotatedType.java,SimpleAnnotation.java,SimpleAnnotation2.java,AnnotationAspect04.aj" + options="-1.9"> + <message kind="error" line="7" text="can't use declare parents to alter supertype of annotation type SimpleAnnotation"/> + <message kind="error" line="10" text="can't use declare parents to make 'java.lang.annotation.Annotation' the parent of type"/> + <message kind="error" line="4" text="can't use declare parents to make annotation type SimpleAnnotation implement an interface"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations" vm="1.5" title="declare parents wildcards matching annotation types"> + <compile files="AnnotatedType.java,SimpleAnnotation.java,SimpleAnnotation2.java,AnnotationAspect05.aj" + options="-1.9"> + <message kind="warning" line="4" text="annotation type SimpleAnnotation2 matches a declare parents type pattern but is being ignored"/> + <message kind="warning" line="4" text="annotation type SimpleAnnotation matches a declare parents type pattern but is being ignored"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/binding/complexExample" vm="1.5" title="annotated any pattern"> + <compile files="A.java,B.java,C.java,Color.java,X3.java" + options="-1.9"> + </compile> + <run class="g.h.i.C"/> + <run class="a.b.c.A"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding/complexExample" vm="1.5" title="annotation not imported"> + <compile files="A.java,B.java,C.java,Color.java,X4.java" + options="-1.9"> + <message kind="warning" line="6" text="no match for this type name: Color"/> + </compile> + <run class="a.b.c.A"/> + </ajc-test> + + <ajc-test dir="java5/annotations/itds" vm="1.5" title="annotated public itds"> + <compile files="AtItd2.aj" options="-1.9"/> + <run class="AtItd2"/> + </ajc-test> + + <ajc-test dir="java5/annotations/itds" vm="1.5" title="annotated public itds - values"> + <compile files="AtItd3.aj" options="-1.9"/> + <run class="AtItd3"/> + </ajc-test> + + <ajc-test dir="java5/annotations/itds" vm="1.5" title="annotated public itds - multiple complex annotations"> + <compile files="AtItd4.aj" options="-1.9"/> + <run class="AtItd4"/> + </ajc-test> + + + <ajc-test dir="java5/annotations/itds" vm="1.5" title="nasty annotation and itds test"> + <compile files="AnnotationsAndITDs.aj" options="-1.9"> + <!-- first two are ITCs, second two are ITCs annotated via declare @ctor, third is default ctor --> + <message kind="warning" line="17" text="execution(@SomeAnnotation ...new(..)"/> + <message kind="warning" line="20" text="execution(@SomeAnnotation ...new(..)"/> + <message kind="warning" line="45" text="execution(@SomeAnnotation ...new(..)"/> + <message kind="warning" line="46" text="execution(@SomeAnnotation ...new(..)"/> + <message kind="warning" line="180" text="execution(@SomeAnnotation ...new(..)"/> + + <!-- first four are fields annotated via declare, last two are directly annotated ITDs --> + <message kind="warning" line="59" text="set(@SomeAnnotation...)"/> + <message kind="warning" line="60" text="set(@SomeAnnotation...)"/> + <message kind="warning" line="70" text="set(@SomeAnnotation...)"/> + <message kind="warning" line="71" text="set(@SomeAnnotation...)"/> + <message kind="warning" line="76" text="set(@SomeAnnotation...)"/> + <message kind="warning" line="77" text="set(@SomeAnnotation...)"/> + + <!-- annotations added via declare --> + <message kind="warning" line="175" text="si(@SomeAnnotation...)"/> + <message kind="warning" line="180" text="si(@SomeAnnotation...)"/> + + <message kind="warning" line="25" text="execution(@SomeAnnotation ...)"/> + <message kind="warning" line="28" text="execution(@SomeAnnotation ...)"/> + <message kind="warning" line="52" text="execution(@SomeAnnotation ...)"/> + <message kind="warning" line="53" text="execution(@SomeAnnotation ...)"/> + <!--message kind="warning" line="70" text="set(@SomeAnnotation...)"/> + <message kind="warning" line="71" text="set(@SomeAnnotation...)"/--> + </compile> + <run class="AnnotationsAndITDs"> + <stderr> + <line text="@type java.lang.System (AnnotationsAndITDs.aj:0)"/> + <line text="hello AnnotationsAndITDs (AnnotationsAndITDs.aj:17)"/> + <line text="goodbye java.lang.String (AnnotationsAndITDs.aj:20)"/> + <line text="goodbye java.lang.String (AnnotationsAndITDs.aj:20)"/> + <line text="y java.lang.Integer (AnnotationsAndITDs.aj:28)"/> + <line text="d java.lang.Double (AnnotationsAndITDs.aj:70)"/> + <line text="f java.lang.Double (AnnotationsAndITDs.aj:71)"/> + <line text="@type java.lang.System (AnnotationsAndITDs.aj:0)"/> + <line text="@field ITDMe2 (AnnotationsAndITDs.aj:59)"/> + <line text="@field ITDMe2 (AnnotationsAndITDs.aj:60)"/> + <line text="@cons java.lang.String (AnnotationsAndITDs.aj:45)"/> + <line text="@field ITDMe2 (AnnotationsAndITDs.aj:59)"/> + <line text="@field ITDMe2 (AnnotationsAndITDs.aj:60)"/> + <line text="@cons java.lang.String (AnnotationsAndITDs.aj:46)"/> + <line text="@cons java.lang.String (AnnotationsAndITDs.aj:46)"/> + <line text="@method ITDMe2 (AnnotationsAndITDs.aj:53)"/> + <line text="@field ITDMe2 (AnnotationsAndITDs.aj:76)"/> + <line text="@field ITDMe2 (AnnotationsAndITDs.aj:77)"/> + + <!-- + <line text="method bar has 1 params, first param annotation is @ParamAnnotation"/> + --> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" pr="91858" title="declare @Type (should be @type)"> + <compile files="DeathByPoorSpelling.aj" options="-1.9"> + <message kind="error" line="6" text="Syntax error on token ":", "one of type, method, field, constructor" expected"/> + </compile> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- Autoboxing tests --> + <!-- ======================================================================================= --> + + <ajc-test dir="java5/autoboxing" vm="1.5" title="simple boxing test"> + <compile files="AutoboxingB.java,AutoboxingC.java,AutoboxingD.java,AutoboxingF.java,AutoboxingI.java,AutoboxingJ.java,AutoboxingS.java,AutoboxingZ.java,SimpleAutoboxing.java,SimpleAutoboxingAspect.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'SimpleAutoboxing' (SimpleAutoboxing.java:7) advised by before advice from 'SimpleAutoboxingAspect' (SimpleAutoboxingAspect.aj:8)"/> + <message kind="weave" text="Type 'SimpleAutoboxing' (SimpleAutoboxing.java:7) advised by before advice from 'SimpleAutoboxingAspect' (SimpleAutoboxingAspect.aj:4)"/> + </compile> + <run class="SimpleAutoboxing"> + <stderr> + <line text="Matching by Integer:20000"/> + <line text="Matching by int:20000"/> + <line text="method_takes_Integer=20000"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/autoboxing" vm="1.5" title="integer boxing"> + <compile files="AutoboxingB.java,AutoboxingC.java,AutoboxingD.java,AutoboxingF.java,AutoboxingI.java,AutoboxingJ.java,AutoboxingS.java,AutoboxingZ.java,SimpleAutoboxing.java,AspectInteger.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'AutoboxingI' (AutoboxingI.java:11) advised by before advice from 'AspectInteger' (AspectInteger.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingI' (AutoboxingI.java:11) advised by before advice from 'AspectInteger' (AspectInteger.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingI' (AutoboxingI.java:12) advised by before advice from 'AspectInteger' (AspectInteger.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingI' (AutoboxingI.java:12) advised by before advice from 'AspectInteger' (AspectInteger.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingI' (AutoboxingI.java:13) advised by before advice from 'AspectInteger' (AspectInteger.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingI' (AutoboxingI.java:13) advised by before advice from 'AspectInteger' (AspectInteger.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingI' (AutoboxingI.java:14) advised by before advice from 'AspectInteger' (AspectInteger.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingI' (AutoboxingI.java:14) advised by before advice from 'AspectInteger' (AspectInteger.aj:4)"/> + </compile> + <run class="AutoboxingI"> + <stderr> + <line text="Matching by Integer:10000"/> + <line text="Matching by int:10000"/> + <line text="method_takes_Integer=10000"/> + <line text="Matching by Integer:20000"/> + <line text="Matching by int:20000"/> + <line text="method_takes_Integer=20000"/> + <line text="Matching by Integer:30000"/> + <line text="Matching by int:30000"/> + <line text="method_takes_int=30000"/> + <line text="Matching by Integer:40000"/> + <line text="Matching by int:40000"/> + <line text="method_takes_int=40000"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/autoboxing" vm="1.5" title="char boxing"> + <compile files="AutoboxingB.java,AutoboxingC.java,AutoboxingD.java,AutoboxingF.java,AutoboxingI.java,AutoboxingJ.java,AutoboxingS.java,AutoboxingZ.java,SimpleAutoboxing.java,AspectChar.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'AutoboxingC' (AutoboxingC.java:11) advised by before advice from 'AspectChar' (AspectChar.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingC' (AutoboxingC.java:11) advised by before advice from 'AspectChar' (AspectChar.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingC' (AutoboxingC.java:12) advised by before advice from 'AspectChar' (AspectChar.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingC' (AutoboxingC.java:12) advised by before advice from 'AspectChar' (AspectChar.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingC' (AutoboxingC.java:13) advised by before advice from 'AspectChar' (AspectChar.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingC' (AutoboxingC.java:13) advised by before advice from 'AspectChar' (AspectChar.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingC' (AutoboxingC.java:14) advised by before advice from 'AspectChar' (AspectChar.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingC' (AutoboxingC.java:14) advised by before advice from 'AspectChar' (AspectChar.aj:4)"/> + </compile> + <run class="AutoboxingC"> + <stderr> + <line text="Character:1"/> + <line text="char:1"/> + <line text="method_takes_Character=1"/> + <line text="Character:2"/> + <line text="char:2"/> + <line text="method_takes_Character=2"/> + <line text="Character:3"/> + <line text="char:3"/> + <line text="method_takes_char=3"/> + <line text="Character:4"/> + <line text="char:4"/> + <line text="method_takes_char=4"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/autoboxing" vm="1.5" title="double boxing"> + <compile files="AutoboxingB.java,AutoboxingC.java,AutoboxingD.java,AutoboxingF.java,AutoboxingI.java,AutoboxingJ.java,AutoboxingS.java,AutoboxingZ.java,SimpleAutoboxing.java,AspectDouble.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'AutoboxingD' (AutoboxingD.java:11) advised by before advice from 'AspectDouble' (AspectDouble.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingD' (AutoboxingD.java:11) advised by before advice from 'AspectDouble' (AspectDouble.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingD' (AutoboxingD.java:12) advised by before advice from 'AspectDouble' (AspectDouble.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingD' (AutoboxingD.java:12) advised by before advice from 'AspectDouble' (AspectDouble.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingD' (AutoboxingD.java:13) advised by before advice from 'AspectDouble' (AspectDouble.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingD' (AutoboxingD.java:13) advised by before advice from 'AspectDouble' (AspectDouble.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingD' (AutoboxingD.java:14) advised by before advice from 'AspectDouble' (AspectDouble.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingD' (AutoboxingD.java:14) advised by before advice from 'AspectDouble' (AspectDouble.aj:4)"/> + </compile> + <run class="AutoboxingD"> + <stderr> + <line text="Double:100.0"/> + <line text="double:100.0"/> + <line text="method_takes_Double=100.0"/> + <line text="Double:200.0"/> + <line text="double:200.0"/> + <line text="method_takes_Double=200.0"/> + <line text="Double:300.0"/> + <line text="double:300.0"/> + <line text="method_takes_double=300.0"/> + <line text="Double:400.0"/> + <line text="double:400.0"/> + <line text="method_takes_double=400.0"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/autoboxing" vm="1.5" title="float boxing"> + <compile files="AutoboxingB.java,AutoboxingC.java,AutoboxingD.java,AutoboxingF.java,AutoboxingI.java,AutoboxingJ.java,AutoboxingS.java,AutoboxingZ.java,SimpleAutoboxing.java,AspectFloat.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'AutoboxingF' (AutoboxingF.java:11) advised by before advice from 'AspectFloat' (AspectFloat.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingF' (AutoboxingF.java:11) advised by before advice from 'AspectFloat' (AspectFloat.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingF' (AutoboxingF.java:12) advised by before advice from 'AspectFloat' (AspectFloat.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingF' (AutoboxingF.java:12) advised by before advice from 'AspectFloat' (AspectFloat.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingF' (AutoboxingF.java:13) advised by before advice from 'AspectFloat' (AspectFloat.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingF' (AutoboxingF.java:13) advised by before advice from 'AspectFloat' (AspectFloat.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingF' (AutoboxingF.java:14) advised by before advice from 'AspectFloat' (AspectFloat.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingF' (AutoboxingF.java:14) advised by before advice from 'AspectFloat' (AspectFloat.aj:4)"/> + </compile> + <run class="AutoboxingF"> + <stderr> + <line text="Float:100.0"/> + <line text="float:100.0"/> + <line text="method_takes_Float=100.0"/> + <line text="Float:200.0"/> + <line text="float:200.0"/> + <line text="method_takes_Float=200.0"/> + <line text="Float:300.0"/> + <line text="float:300.0"/> + <line text="method_takes_float=300.0"/> + <line text="Float:400.0"/> + <line text="float:400.0"/> + <line text="method_takes_float=400.0"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/autoboxing" vm="1.5" title="short boxing"> + <compile files="AutoboxingB.java,AutoboxingC.java,AutoboxingD.java,AutoboxingF.java,AutoboxingI.java,AutoboxingJ.java,AutoboxingS.java,AutoboxingZ.java,SimpleAutoboxing.java,AspectShort.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'AutoboxingS' (AutoboxingS.java:11) advised by before advice from 'AspectShort' (AspectShort.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingS' (AutoboxingS.java:11) advised by before advice from 'AspectShort' (AspectShort.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingS' (AutoboxingS.java:12) advised by before advice from 'AspectShort' (AspectShort.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingS' (AutoboxingS.java:12) advised by before advice from 'AspectShort' (AspectShort.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingS' (AutoboxingS.java:13) advised by before advice from 'AspectShort' (AspectShort.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingS' (AutoboxingS.java:13) advised by before advice from 'AspectShort' (AspectShort.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingS' (AutoboxingS.java:14) advised by before advice from 'AspectShort' (AspectShort.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingS' (AutoboxingS.java:14) advised by before advice from 'AspectShort' (AspectShort.aj:4)"/> + </compile> + <run class="AutoboxingS"> + <stderr> + <line text="Short:100"/> + <line text="short:100"/> + <line text="method_takes_Short=100"/> + <line text="Short:200"/> + <line text="short:200"/> + <line text="method_takes_Short=200"/> + <line text="Short:300"/> + <line text="short:300"/> + <line text="method_takes_short=300"/> + <line text="Short:400"/> + <line text="short:400"/> + <line text="method_takes_short=400"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/autoboxing" vm="1.5" title="long boxing"> + <compile files="AutoboxingB.java,AutoboxingC.java,AutoboxingD.java,AutoboxingF.java,AutoboxingI.java,AutoboxingJ.java,AutoboxingS.java,AutoboxingZ.java,SimpleAutoboxing.java,AspectLong.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'AutoboxingJ' (AutoboxingJ.java:11) advised by before advice from 'AspectLong' (AspectLong.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingJ' (AutoboxingJ.java:11) advised by before advice from 'AspectLong' (AspectLong.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingJ' (AutoboxingJ.java:12) advised by before advice from 'AspectLong' (AspectLong.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingJ' (AutoboxingJ.java:12) advised by before advice from 'AspectLong' (AspectLong.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingJ' (AutoboxingJ.java:13) advised by before advice from 'AspectLong' (AspectLong.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingJ' (AutoboxingJ.java:13) advised by before advice from 'AspectLong' (AspectLong.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingJ' (AutoboxingJ.java:14) advised by before advice from 'AspectLong' (AspectLong.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingJ' (AutoboxingJ.java:14) advised by before advice from 'AspectLong' (AspectLong.aj:4)"/> + </compile> + <run class="AutoboxingJ"> + <stderr> + <line text="Long:1000000"/> + <line text="long:1000000"/> + <line text="method_takes_Long=1000000"/> + <line text="Long:2000000"/> + <line text="long:2000000"/> + <line text="method_takes_Long=2000000"/> + <line text="Long:3000000"/> + <line text="long:3000000"/> + <line text="method_takes_long=3000000"/> + <line text="Long:4000000"/> + <line text="long:4000000"/> + <line text="method_takes_long=4000000"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/autoboxing" vm="1.5" title="boolean boxing"> + <compile files="AutoboxingB.java,AutoboxingC.java,AutoboxingD.java,AutoboxingF.java,AutoboxingI.java,AutoboxingJ.java,AutoboxingS.java,AutoboxingZ.java,SimpleAutoboxing.java,AspectBoolean.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'AutoboxingZ' (AutoboxingZ.java:9) advised by before advice from 'AspectBoolean' (AspectBoolean.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingZ' (AutoboxingZ.java:9) advised by before advice from 'AspectBoolean' (AspectBoolean.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingZ' (AutoboxingZ.java:10) advised by before advice from 'AspectBoolean' (AspectBoolean.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingZ' (AutoboxingZ.java:10) advised by before advice from 'AspectBoolean' (AspectBoolean.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingZ' (AutoboxingZ.java:11) advised by before advice from 'AspectBoolean' (AspectBoolean.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingZ' (AutoboxingZ.java:11) advised by before advice from 'AspectBoolean' (AspectBoolean.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingZ' (AutoboxingZ.java:12) advised by before advice from 'AspectBoolean' (AspectBoolean.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingZ' (AutoboxingZ.java:12) advised by before advice from 'AspectBoolean' (AspectBoolean.aj:4)"/> + </compile> + <run class="AutoboxingZ"> + <stderr> + <line text="Boolean:false"/> + <line text="boolean:false"/> + <line text="method_takes_Boolean=false"/> + <line text="Boolean:false"/> + <line text="boolean:false"/> + <line text="method_takes_Boolean=false"/> + <line text="Boolean:false"/> + <line text="boolean:false"/> + <line text="method_takes_boolean=false"/> + <line text="Boolean:false"/> + <line text="boolean:false"/> + <line text="method_takes_boolean=false"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/autoboxing" vm="1.5" title="byte boxing"> + <compile files="AutoboxingB.java,AutoboxingC.java,AutoboxingD.java,AutoboxingF.java,AutoboxingI.java,AutoboxingJ.java,AutoboxingS.java,AutoboxingZ.java,SimpleAutoboxing.java,AspectByte.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'AutoboxingB' (AutoboxingB.java:11) advised by before advice from 'AspectByte' (AspectByte.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingB' (AutoboxingB.java:11) advised by before advice from 'AspectByte' (AspectByte.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingB' (AutoboxingB.java:12) advised by before advice from 'AspectByte' (AspectByte.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingB' (AutoboxingB.java:12) advised by before advice from 'AspectByte' (AspectByte.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingB' (AutoboxingB.java:13) advised by before advice from 'AspectByte' (AspectByte.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingB' (AutoboxingB.java:13) advised by before advice from 'AspectByte' (AspectByte.aj:4)"/> + <message kind="weave" text="Type 'AutoboxingB' (AutoboxingB.java:14) advised by before advice from 'AspectByte' (AspectByte.aj:8)"/> + <message kind="weave" text="Type 'AutoboxingB' (AutoboxingB.java:14) advised by before advice from 'AspectByte' (AspectByte.aj:4)"/> + </compile> + <run class="AutoboxingB"> + <stderr> + <line text="Byte:1"/> + <line text="byte:1"/> + <line text="method_takes_Byte=1"/> + <line text="Byte:50"/> + <line text="byte:50"/> + <line text="method_takes_Byte=50"/> + <line text="Byte:3"/> + <line text="byte:3"/> + <line text="method_takes_byte=3"/> + <line text="Byte:52"/> + <line text="byte:52"/> + <line text="method_takes_byte=52"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/autoboxing" vm="1.5" title="boxing in after returning"> + <compile files="AutoboxingB.java,AutoboxingC.java,AutoboxingD.java,AutoboxingF.java,AutoboxingI.java,AutoboxingJ.java,AutoboxingS.java,AutoboxingZ.java,SimpleAutoboxing.java,AspectAfterReturning.aj" + options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'AspectAfterReturning' (AspectAfterReturning.aj:18) advised by afterReturning advice from 'AspectAfterReturning' (AspectAfterReturning.aj:4)"/> + <message kind="weave" text="Type 'AspectAfterReturning' (AspectAfterReturning.aj:18) advised by afterReturning advice from 'AspectAfterReturning' (AspectAfterReturning.aj:8)"/> + <message kind="weave" text="Type 'AspectAfterReturning' (AspectAfterReturning.aj:18) advised by afterReturning advice from 'AspectAfterReturning' (AspectAfterReturning.aj:12)"/> + <message kind="weave" text="Type 'AspectAfterReturning' (AspectAfterReturning.aj:19) advised by afterReturning advice from 'AspectAfterReturning' (AspectAfterReturning.aj:4)"/> + <message kind="weave" text="Type 'AspectAfterReturning' (AspectAfterReturning.aj:19) advised by afterReturning advice from 'AspectAfterReturning' (AspectAfterReturning.aj:8)"/> + <message kind="weave" text="Type 'AspectAfterReturning' (AspectAfterReturning.aj:19) advised by afterReturning advice from 'AspectAfterReturning' (AspectAfterReturning.aj:12)"/> + </compile> + <run class="AspectAfterReturning"> + <stderr> + <line text="Returning I=5"/> + <line text="Returning Integer=5"/> + <line text="Returning Object=5"/> + <line text="Returning I=10"/> + <line text="Returning Integer=10"/> + <line text="Returning Object=10"/> + </stderr> + </run> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- Covariance tests --> + <!-- ======================================================================================= --> + + <ajc-test dir="java5/covariance" vm="1.5" title="covariance 1"> + <compile options="-1.9,-showWeaveInfo" files="CovBaseProgram01.java,CovAspect01.aj"> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:26) advised by before advice from 'CovAspect01' (CovAspect01.aj:5)"/> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:27) advised by before advice from 'CovAspect01' (CovAspect01.aj:5)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/covariance" vm="1.5" title="covariance 2"> + <compile options="-1.9,-showWeaveInfo" files="CovBaseProgram01.java,CovAspect02.aj"> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:26) advised by before advice from 'CovAspect02' (CovAspect02.aj:5)"/> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:27) advised by before advice from 'CovAspect02' (CovAspect02.aj:5)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/covariance" vm="1.5" title="covariance 3"> + <compile options="-1.9,-showWeaveInfo" files="CovBaseProgram01.java,CovAspect03.aj"> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:26) advised by before advice from 'CovAspect03' (CovAspect03.aj:5)"/> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:27) advised by before advice from 'CovAspect03' (CovAspect03.aj:5)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/covariance" vm="1.5" title="covariance 4"> + <compile options="-1.9,-showWeaveInfo" files="CovBaseProgram02.java,CovAspect04.aj"> + <message kind="weave" text="Type 'CovBaseProgram02' (CovBaseProgram02.java:30) advised by before advice from 'CovAspect04' (CovAspect04.aj:5)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/covariance" vm="1.5" title="covariance 5"> + <compile options="-1.9,-showWeaveInfo" files="CovBaseProgram01.java,CovAspect05.aj"> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:26) advised by before advice from 'CovAspect05' (CovAspect05.aj:5)"/> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:27) advised by before advice from 'CovAspect05' (CovAspect05.aj:5)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/covariance" vm="1.5" title="covariance 6"> + <compile options="-1.9,-showWeaveInfo" files="CovBaseProgram01.java,CovAspect06.aj"> + <message kind="warning" line="3" text="does not match because declaring type is Super"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/covariance" vm="1.5" title="covariance 7"> + <compile options="-1.9,-showWeaveInfo" files="CovBaseProgram01.java,CovAspect07.aj"> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:27) advised by before advice from 'CovAspect07' (CovAspect07.aj:5)"/> + <message kind="warning" line="3" text="does not match because declaring type is Super"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/covariance" vm="1.5" title="covariance 8"> + <compile options="-1.9,-showWeaveInfo" files="CovBaseProgram01.java,CovAspect08.aj"> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:27) advised by before advice from 'CovAspect08' (CovAspect08.aj:11)"/> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:27) advised by before advice from 'CovAspect08' (CovAspect08.aj:5)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/covariance" vm="1.5" title="covariance 9"> + <compile options="-1.9,-showWeaveInfo" files="CovBaseProgram01.java,CovAspect09.aj"> + </compile> + </ajc-test> + + <ajc-test dir="java5/covariance" vm="1.5" title="covariance 10"> + <compile options="-1.9,-showWeaveInfo" files="CovBaseProgram01.java,CovAspect10.aj"> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:26) advised by before advice from 'CovAspect10' (CovAspect10.aj:5)"/> + <message kind="weave" text="Type 'CovBaseProgram01' (CovBaseProgram01.java:27) advised by before advice from 'CovAspect10' (CovAspect10.aj:5)"/> + </compile> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- Enum tests --> + <!-- ======================================================================================= --> + + <ajc-test dir="java5/enums" vm="1.5" title="cant itd constructor on enum"> + <compile files="SimpleEnum.java,SimpleEnum2.java,EnumAspect01.aj" options="-1.9"> + <message kind="error" line="2" text="can't make inter-type constructor declarations on enum types"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/enums" vm="1.5" title="cant itd field or method on enum"> + <compile files="SimpleEnum.java,SimpleEnum2.java,EnumAspect02.aj" options="-1.9"> + <message kind="error" line="2" text="can't make inter-type method declarations on enum types"/> + <message kind="error" line="6" text="can't make inter-type field declarations on enum types"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/enums" vm="1.5" title="declare parents and enums"> + <compile files="SimpleEnum.java,SimpleEnum2.java,EnumAspect03.aj" options="-1.9"> + <message kind="error" line="5" text="can't use declare parents to make enum type SimpleEnum implement an interface"/> + <message kind="error" line="8" text="can't use declare parents to alter supertype of enum type SimpleEnum"/> + <message kind="error" line="11" text="can't use declare parents to make 'java.lang.Enum' the parent of type EnumAspect03$D"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/enums" vm="1.5" title="wildcard enum match in itd"> + <compile files="SimpleEnum.java,SimpleEnum2.java,EnumAspect04.aj" options="-1.9"> + <message kind="warning" line="5" text="enum type SimpleEnum2 matches a declare parents type pattern but is being ignored"/> + <message kind="warning" line="5" text="enum type SimpleEnum matches a declare parents type pattern but is being ignored"/> + </compile> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- pertypewithin tests --> + <!-- ======================================================================================= --> + + <ajc-test dir="java5/pertypewithin" title="basic ptw test"> + <compile files="A.java,B.java,C.java,D.java,Main.java,X.java" options="-Xlint:ignore"/> + <run class="p.A"> + <stderr> + <line text="hi from A"/> + <line text="after() returning from a method call to sayhi()"/> + <line text="hi from A"/> + <line text="after() returning from a method call to sayhi()"/> + <line text="Tests in A have passed"/> + <line text="callcount = 2"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/pertypewithin" title="ptw hasAspect"> + <compile files="A.java,B.java,C.java,D.java,Main.java,X.java" options="-Xlint:ignore"/> + <run class="p.B"> + <stderr> + <line text="hi from B"/> + <line text="after() returning from a method call to sayhi()"/> + <line text="hi from B"/> + <line text="after() returning from a method call to sayhi()"/> + <line text="hi from B"/> + <line text="after() returning from a method call to sayhi()"/> + <line text="callcount = 3"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/pertypewithin" title="ptw aspectOf"> + <compile files="A.java,B.java,C.java,D.java,Main.java,X.java" options="-Xlint:ignore"/> + <run class="p.C"/> + </ajc-test> + + <ajc-test dir="java5/pertypewithin" title="ptw multi-aspects"> + <compile files="P.java,Q.java,R.java"/> + <run class="P"> + <stderr> + <line text="Q reporting 2"/> + <line text="R reporting 3"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/pertypewithin" title="ptw binary"> + <weave classesFiles="G.java" aspectsFiles="H.java"/> + <run class="G"> + <stderr> + <line text="advice running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/pertypewithin" title="ptw binary aspect"> + <compile files="H.java" outjar="aspects.jar"> + <message kind="warning" line="1" text="no match for this type name: G"/> + </compile> + <compile files="G.java" aspectpath="aspects.jar"/> + <run class="G"> + <stderr> + <line text="advice running"/> + </stderr> + </run> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- varargs tests --> + <!-- ======================================================================================= --> + + <ajc-test dir="java5/varargs" vm="1.5" title="varargs not matched by Object[] (call)"> + <compile files="SimpleVarargs.java,VarargsAspect01.aj" options="-1.9,-showWeaveInfo"> + </compile> + </ajc-test> + + <ajc-test dir="java5/varargs" vm="1.5" title="varargs not matched by Object[] (exe)"> + <compile files="SimpleVarargs.java,VarargsAspect02.aj" options="-1.9,-showWeaveInfo"> + </compile> + </ajc-test> + + <ajc-test dir="java5/varargs" vm="1.5" title="varargs not matched by Object[] (init)"> + <compile files="SimpleVarargs.java,VarargsAspect03.aj" options="-1.9,-showWeaveInfo"> + </compile> + </ajc-test> + + <ajc-test dir="java5/varargs" vm="1.5" title="varargs not matched by Object[] (withincode)"> + <compile files="SimpleVarargs.java,VarargsAspect04.aj" options="-1.9,-showWeaveInfo"> + </compile> + </ajc-test> + + <ajc-test dir="java5/varargs" vm="1.5" title="call with varargs signature"> + <compile files="SimpleVarargs.java,VarargsAspect05.aj" options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'SimpleVarargs' (SimpleVarargs.java:20) advised by before advice from 'VarargsAspect05' (VarargsAspect05.aj:3)"/> + <message kind="weave" text="Type 'SimpleVarargs' (SimpleVarargs.java:21) advised by before advice from 'VarargsAspect05' (VarargsAspect05.aj:3)"/> + <message kind="weave" text="Type 'SimpleVarargs' (SimpleVarargs.java:22) advised by before advice from 'VarargsAspect05' (VarargsAspect05.aj:3)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/varargs" vm="1.5" title="call with varargs multi-signature"> + <compile files="SimpleVarargs.java,VarargsAspect06.aj" options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'SimpleVarargs' (SimpleVarargs.java:25) advised by before advice from 'VarargsAspect06' (VarargsAspect06.aj:3)"/> + <message kind="weave" text="Type 'SimpleVarargs' (SimpleVarargs.java:26) advised by before advice from 'VarargsAspect06' (VarargsAspect06.aj:3)"/> + <message kind="weave" text="Type 'SimpleVarargs' (SimpleVarargs.java:27) advised by before advice from 'VarargsAspect06' (VarargsAspect06.aj:3)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/suppressedWarnings" vm="1.5" title="suppressing non-matching advice warnings"> + <compile files="Suppression1.aj" options="-1.9,-showWeaveInfo"> + <message kind="warning" line="13"/> + <message kind="warning" line="21"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/suppressedWarnings" vm="1.5" title="suppressing non-matching advice warnings when multiple source files involved"> + <compile files="A.java,A1.aj,A2.aj,A3.aj" options="-1.9,-showWeaveInfo"> + <message kind="warning" line="4" file="A1.aj"/> + <message kind="warning" line="4" file="A2.aj"/> + <message kind="warning" line="11" file="A2.aj"/> + <message kind="warning" line="4" file="A3.aj"/> + <message kind="warning" line="11" file="A3.aj"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="XLint warning for advice not applied with cflow(execution)" pr="93345"> + <compile options="-Xlint,-1.9" files="PR93345.aj" > + <message kind="warning" line="9" text="advice defined in AnAspect has not been applied [Xlint:adviceDidNotMatch]"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150" title="NPE in reflect implementation" pr="94167"> + <compile files="PR94167.java"/> + <run class="reflect.PR94167"/> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- annotated aspect members --> + <!-- ======================================================================================= --> + + <ajc-test dir="java5/annotations/aspectMembers" title="annotated annotations (@Target)"> + <compile files="a/Annotations.java,a/Foo.java" options="-1.9"> + <message kind="error" line="16" text="The annotation @MethodAnnotation is disallowed for this location"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/aspectMembers" title="simple annotated aspect members"> + <compile files="a/Annotations.java,a/AnnotatedAspect.aj" options="-1.9"> + <message kind="warning" line="4" text="annotated type"/> + <message kind="warning" line="6" text="annotated field"/> + <message kind="warning" line="8" text="annotated method"/> + <message kind="warning" line="11" text="annotated constructor"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/aspectMembers" title="simple annotated aspect members with bad target"> + <compile files="a/Annotations.java,a/AnnotatedAspect02.aj" options="-1.9"> + <message kind="error" line="3" text="The annotation @MethodAnnotation is disallowed for this location"/> + <message kind="error" line="6" text="The annotation @TypeAnnotation is disallowed for this location"/> + <message kind="error" line="8" text="The annotation @FieldAnnotation is disallowed for this location"/> + <message kind="error" line="10" text="The annotation @AnnotationAnnotation is disallowed for this location"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/aspectMembers" title="annotated itds"> + <compile files="a/Annotations.java,a/AnnotatedAspect03.aj" options="-1.9"> + <message kind="warning" line="4" text="annotated type"/> + <message kind="warning" line="6" text="annotated field"/> + <message kind="warning" line="8" text="annotated field"/> + <message kind="warning" line="10" text="annotated method"/> + <message kind="warning" line="12" text="annotated constructor"/> + <message kind="warning" line="12" text="annotated field"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/aspectMembers" title="annotated itds with bad target"> + <compile files="a/Annotations.java,a/AnnotatedAspect04.aj" options="-1.9"> + <message kind="error" line="6" text="The annotation @ConstructorAnnotation is disallowed for this location"/> + <message kind="error" line="8" text="The annotation @FieldAnnotation is disallowed for this location"/> + <message kind="error" line="10" text="The annotation @TypeAnnotation is disallowed for this location"/> + <!-- known limitation... + <message kind="error" line="12" text="The annotation @MethodAnnotation is disallowed for this location"/> + --> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/aspectMembers" title="annotated advice"> + <compile files="a/Annotations.java,a/AnnotatedAspect05.aj" options="-1.9"> + <message kind="warning" line="17"/> + </compile> + <run class="a.AnnotatedAspect05"/> + </ajc-test> + + <ajc-test dir="java5/annotations/aspectMembers" title="annotated advice with bad target"> + <compile files="a/Annotations.java,a/AnnotatedAspect06.aj" options="-1.9"> + <message kind="error" line="6" text="The annotation @ConstructorAnnotation is disallowed for this location"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/aspectMembers" title="annotated pointcut"> + <compile files="a/Annotations.java,a/AnnotatedAspect07.aj" options="-1.9"> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/aspectMembers" title="annotated declare statements"> + <compile files="a/Annotations.java,a/AnnotatedAspect08.aj" options="-1.9"> + </compile> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- ajdk examples --> + <!-- ======================================================================================= --> + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: annotating aspects chapter"> + <compile files="AnnotatingAspects.aj" options="-1.9"> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: annotating aspects chapter, ex 2"> + <compile files="SuppressAj.aj" options="-1.9"> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: annotation pattern matching"> + <compile files="AnnotationPatternMatching.aj,org/xyz/OrgXYZAnnotation.java" options="-1.9"> + <message kind="warning" line="25" text="@Immutable"/> + <message kind="warning" line="25" text="!@Persistent"/> + <message kind="warning" line="29" text="!@Persistent"/> + <message kind="warning" line="31" text="!@Persistent"/> + <message kind="warning" line="33" text="!@Persistent"/> + <message kind="warning" line="29" text="@Foo @Goo"/> + <message kind="warning" line="29" text="@(Foo || Goo)"/> + <message kind="warning" line="31" text="@(Foo || Goo)"/> + <message kind="warning" line="33" text="@(org.xyz..*)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: annotation type pattern matching"> + <compile files="AnnotationsInTypePatterns.aj,org/xyz/OrgXYZAnnotation.java,org/xyz/Types.java,org/abc/Types.java,anns/Immutable.java,anns/NonPersistent.java" options="-1.9"> + <message kind="warning" line="23" text="(@Immutable *)"/> + <message kind="warning" line="32" text="(@Immutable *)"/> + <message kind="warning" line="3" text="(@Immutable *)"/> + <message kind="warning" line="5" text="(@Immutable *)"/> + <message kind="warning" line="8" text="(@Immutable *)"/> + <message kind="warning" line="25" text="(!@Immutable *)"/> + <message kind="warning" line="27" text="(!@Immutable *)"/> + <message kind="warning" line="29" text="(!@Immutable *)"/> + <message kind="warning" line="5" text="(!@Immutable *)"/> + <message kind="warning" line="6" text="(!@Immutable *)"/> + <message kind="warning" line="2" text="(!@Immutable *)"/> + <message kind="warning" line="2" text="(!@Immutable *)"/> + <message kind="warning" line="5" text="(!@Immutable *)"/> + <message kind="warning" line="3" text="@Immutable (org.xyz.* || org.abc.*)"/> + <message kind="warning" line="5" text="@Immutable (org.xyz.* || org.abc.*)"/> + <message kind="warning" line="8" text="@Immutable (org.xyz.* || org.abc.*)"/> + <message kind="warning" line="32" text="((@Immutable Foo+) || Goo)"/> + <message kind="warning" line="27" text="((@Immutable Foo+) || Goo)"/> + <message kind="warning" line="3" text="@(Immutable || NonPersistent) org.xyz..*"/> + <message kind="warning" line="6" text="@(Immutable || NonPersistent) org.xyz..*"/> + <message kind="warning" line="8" text="@(Immutable || NonPersistent) org.xyz..*"/> + <message kind="warning" line="8" text="@Immutable @NonPersistent org.xyz..*"/> + <message kind="warning" line="6" text="@(@Inherited *) org.xyz..*"/> + <message kind="warning" line="8" text="@(@Inherited *) org.xyz..*"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: annotations in sig patterns"> + <compile files="AnnotationsInSignaturePatterns.aj,anns/Cachable.java,anns/SensitiveData.java,anns/Persisted.java,Classified.java,anns/Immutable.java,Secure.java,Catastrophic.java,Oneway.java,anns/Transaction.java,org/xyz/SignatureTypes.java" options="-1.9"> + <message kind="warning" line="32" text="@SensitiveData * *"/> + <message kind="warning" line="7" text="@SensitiveData * *"/> + <message kind="warning" line="13" text="@SensitiveData * *"/> + <message kind="warning" line="7" text="@SensitiveData List org.xyz..*.*"/> + <message kind="warning" line="11" text="(@SensitiveData *) org.xyz..*.*"/> + <message kind="warning" line="13" text="(@SensitiveData *) org.xyz..*.*"/> + <message kind="warning" line="50" text="@Foo (@Goo *) (@Hoo *).*"/> + <message kind="warning" line="38" text="@Persisted @Classified * *"/> + + <message kind="warning" line="44" text="@Oneway * *(..)"/> + <message kind="warning" line="18" text="@Transaction * (@Persisted org.xyz..*).*(..)"/> + <message kind="warning" line="52" text="* *.*(@Immutable *,..)"/> + <message kind="warning" line="53" text="* *.*(@Immutable *,..)"/> + <message kind="warning" line="54" text="* *.*(@Immutable *,..)"/> + + <message kind="warning" line="62" text="within(@Secure *)"/> + <message kind="warning" line="63" text="within(@Secure *)"/> + <message kind="warning" line="66" text="staticinitialization(@Persisted *)"/> + <message kind="warning" line="17" text="staticinitialization(@Persisted *)"/> + <message kind="warning" line="56" text="call(@Oneway * *(..))"/> + <message kind="warning" line="28" text="execution(public (@Immutable *) org.xyz..*.*(..))"/> + <message kind="warning" line="26" text="set(@Cachable * *)"/> + <message kind="warning" line="80" text="handler(!@Catastrophic *)"/> + + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: runtime annotations"> + <compile files="RuntimeTypeMatching.aj" options="-1.9"> + <message kind="warning" line="121" text="@within(Foo)"/> + <message kind="warning" line="122" text="@within(Foo)"/> + </compile> + <run class="RuntimeTypeMatching"> + <stdout> + <line text="This information is TOP-SECRET"/> + <line text="@target(Classified) at call(void A.a())"/> + <line text="@this(Foo) at execution(void B.b())"/> + <line text="Classified data being passed at call(void B.callA(A))"/> + <line text="Classified data being passed at execution(void B.callA(A))"/> + <line text="This information is TOP-SECRET"/> + <line text="@target(Classified) at call(Class java.lang.Object.getClass())"/> + <line text="1 @Foo()"/> + <line text="1 @Foo()"/> + <line text="1 @Classified(classification=TOP-SECRET)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/> + <line text="1 @Classified(classification="TOP-SECRET")" vm="1.9"/> + <line text="This information is TOP-SECRET"/> + <line text="Entering critical join point with priority 3"/> + <line text="Entering critical join point with reflectively obtained priority 3"/> + <line text="@target(Classified) at call(void A.a())"/> + <line text="@this(Foo) at execution(void B.callA(A))"/> + <line text="(Class) Transaction required at execution(void ByeByeEJB.method1())"/> + <line text="(Method) Transaction required at execution(void ByeByeEJB.method1())"/> + <line text="(Class) Transaction required at execution(void ByeByeEJB.method2())"/> + <line text="(Method) Transaction required at execution(void ByeByeEJB.method2())"/> + <line text="(Class) Transaction required at execution(void ByeByeEJB.method3())"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: @retention checking"> + <compile files="RetentionTime.aj" options="-1.9"> + <message kind="error" line="8" text="Annotation type Goo does not have runtime retention"/> + <message kind="error" line="13" text="Annotation type Goo does not have runtime retention"/> + <message kind="error" line="18" text="Annotation type Goo does not have runtime retention"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: @inherited"> + <compile files="AnnotationInheritance.aj" options="-1.9"> + <message kind="warning" line="16" text="annotatedMethodCall()"/> + <!-- <message kind="warning" line="17" text="annotatedMethodCall()"/> --> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: deow-ann"> + <compile files="DeclaresWithAnnotations.aj,org/xyz/model/Model.java" options="-1.9"> + <message kind="warning" line="27" text="Expensive operation called from within performance critical section"/> + <message kind="error" line="26" text="Untrusted code should not call the model classes directly"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: decp-ann"> + <compile files="DecpAnnotations.aj" options="-1.9"> + </compile> + <run class="DecpAnnotations"> + <stdout> + <line text="Test Foo is not secured: PASS"/> + <line text="Test Goo is secured: PASS"/> + <line text="goo credentials: none"/> + <line text="Test BankAccount is not secured: PASS"/> + <line text="Test PrivateBankAccount is not secured: PASS"/> + <line text="Test BusinessBankAccount is secured: PASS"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: dec precedence"> + <compile files="PrecedenceAnnotations.aj" options="-1.9"> + </compile> + <run class="PrecedenceAnnotations"> + <stdout> + <line text="@Security S2"/> + <line text="S1"/> + <line text="@Performance P2"/> + <line text="P1"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/ajdkExamples" title="ajdk: dec annotation"> + <compile files="DeclareAnnotation.aj,org/xyz/model/Model.java" options="-1.9"> + <message kind="warning" line="3" text="@BusinessDomain"/> + <message kind="warning" line="43" text="@Secured"/> + <message kind="warning" line="44" text="@Secured"/> + <message kind="warning" line="55" text="@Secured"/> + <message kind="warning" line="62" text="@Persisted"/> + <message kind="warning" line="68" text="@Persisted"/> + <message kind="warning" line="41" text="@Secured"/> + <message kind="warning" line="51" text="@Secured"/> + </compile> + <run class="DeclareAnnotation"/> + </ajc-test> + + <ajc-test dir="java5/covariance/ajdk" title="ajdk: covariance"> + <compile files="AJDKExamples.aj" options="-1.9"> + <message kind="warning" line="43" text="call(* whoAreYou())"/> + <message kind="warning" line="44" text="call(* whoAreYou())"/> + <message kind="warning" line="43" text="call(* A.whoAreYou())"/> + <message kind="warning" line="44" text="call(* A.whoAreYou())"/> + <message kind="warning" line="43" text="call(A whoAreYou())"/> + <message kind="warning" line="44" text="call(A whoAreYou())"/> + <message kind="warning" line="44" text="call(A+ B.whoAreYou())"/> + <message kind="warning" line="44" text="call(B whoAreYou())"/> + <message kind="warning" line="44" text="call(B B.whoAreYou())"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/varargs/ajdk" title="ajdk: varargs"> + <compile files="AJDKExamples.aj,org/xyz/Foo.java,org/xyz/Goo.java,org/xyz/Hoo.java" options="-1.9"> + <message kind="warning" line="8" text="call vararg match"/> + <message kind="warning" line="14" text="execution vararg match"/> + <message kind="warning" line="5" text="init vararg match"/> + <message kind="warning" line="6" text="init vararg match"/> + <message kind="warning" line="27" text="single vararg"/> + <message kind="warning" line="28" text="single String[]"/> + <message kind="warning" line="18" text="single String[]"/> + </compile> + <run class="AJDKExamples"> + <stdout> + <line text="Matched at call(void X.foo(int, String[]))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/pertypewithin/ajdk" title="ajdk: ptw"> + <compile files="AJDKExamples.aj" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Join point 'constructor-execution(void org.xyz.foo.B.<init>())' in Type 'org.xyz.foo.B' (AJDKExamples.aj:38) advised by afterReturning advice from 'org.xyz.foo.AJDKExamples' (AJDKExamples.aj:11)"/> + <message kind="weave" text="Join point 'constructor-execution(void org.xyz.foo.A.<init>())' in Type 'org.xyz.foo.A' (AJDKExamples.aj:36) advised by afterReturning advice from 'org.xyz.foo.AJDKExamples' (AJDKExamples.aj:11)"/> + </compile> + <run class="org.xyz.foo.AJDKExamples"> + <stdout> + <line text="Aspect instance constructed"/> + <line text="Aspect instance constructed"/> + <line text="true"/> + <line text="true"/> + <line text="There are 2 As"/> + <line text="There are 3 Bs"/> + </stdout> + </run> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- declare annotation --> + <!-- ======================================================================================= --> + + <ajc-test dir="java5/annotations/declare" title="basic declare annotation parse test"> + <compile files="BasicParseTest.aj" options="-1.9"> + </compile> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- declare annotation (@type) --> + <!-- ======================================================================================= --> + + <ajc-test dir="java5/annotations/declare" title="declare @type 1"> + <compile files="DecaType1.java" options="-1.9"/> + <run class="DecaType1"> + <stderr> + <line text="annotation is @MyAnnotation()"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type 2"> + <compile files="DecaType2.java" options="-1.9,-Xlint:ignore" > + </compile> + <run class="DecaType2"> + <stderr> + <line text="annotation on DecaType2 is @MyAnnotation()"/> + <line text="annotation on X is @MyAnnotation()"/> + <line text="annotation on MyAnnotation is @MyAnnotation()"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - with matching pointcut"> + <compile files="DecaType3.java" options="-1.9"/> + <run class="DecaType3"> + <stderr> + <line text="hello world"/> + <line text="advice running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - binary weaving"> + <weave classesFiles="BaseTypes.java" + aspectsFiles="DecaTypeBin1.aj,Colored.java" + options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + </weave> + <run class="BaseTypes"> + <stderr> + <line text="Color identified on class X"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - complex annotation - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaTypeBin2.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="BaseTypes"> + <stderr> + <line text="ComplexAnnotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - complex annotation - source weaving"> + <compile files="BaseTypes.java,DecaTypeBin2.aj" options="-1.9"/> + <run class="BaseTypes"> + <stderr> + <line text="ComplexAnnotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - two annotations hit one type - source weaving"> + <compile files="BaseTypes.java,DecaTypeBin3.aj" options="-1.9"/> + <run class="BaseTypes"> + <stderr> + <line text="Color identified on execution(void A.m())"/> + <line text="Fruit identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - two annotations hit one type - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaTypeBin3.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="BaseTypes"> + <stderr> + <line text="Color identified on execution(void A.m())"/> + <line text="Fruit identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - declare parents interactions (order 1) - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaDecpInteractions1.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="BaseTypes"> + <stderr> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + <ajc-test dir="java5/annotations/declare" title="declare @type - declare parents interactions (order 1) - source weaving"> + <compile files="BaseTypes.java,DecaDecpInteractions1.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="BaseTypes"> + <stderr> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + + + <ajc-test dir="java5/annotations/declare" title="declare @type - declare parents interactions (order 2) - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaDecpInteractions2.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="BaseTypes"> + <stderr> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + <ajc-test dir="java5/annotations/declare" title="declare @type - declare parents interactions (order 2) - source weaving"> + <compile files="BaseTypes.java,DecaDecpInteractions2.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="BaseTypes"> + <stderr> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - declare parents interactions (order 3) - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaDecpInteractions3.aj" options="-1.9,-Xlint:ignore"/> + <run class="BaseTypes"> + <stderr> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + <ajc-test dir="java5/annotations/declare" title="declare @type - declare parents interactions (order 3) - source weaving"> + <compile files="BaseTypes.java,DecaDecpInteractions3.aj" options="-1.9,-Xlint:ignore"/> + <run class="BaseTypes"> + <stderr> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - declare parents interactions (order 4) - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaDecpInteractions4.aj" options="-1.9,-Xlint:ignore"/> + <run class="BaseTypes"> + <stderr> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + <ajc-test dir="java5/annotations/declare" title="declare @type - declare parents interactions (order 4) - source weaving"> + <compile files="BaseTypes.java,DecaDecpInteractions4.aj" options="-1.9,-Xlint:ignore"/> + <run class="BaseTypes"> + <stderr> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Marker interface identified on execution(void A.m())"/> + <line text="Color annotation identified on execution(void A.m())"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - annotating an already annotated type - binary weaving"> + <weave classesFiles="AnnotatedType.java" aspectsFiles="DecaTypeBin4.aj" options="-1.9,-Xlint:ignore"/> + <run class="AnnotatedType"> + <stderr> + <line text="Color identified on execution(void AnnotatedType.m())"/> + <line text="Fruit identified on execution(void AnnotatedType.m())"/> + <line text="m() running"/> + </stderr> + </run> + </ajc-test> + <ajc-test dir="java5/annotations/declare" title="declare @type - annotating an already annotated type - source weaving"> + <compile files="AnnotatedType.java,DecaTypeBin4.aj" options="-1.9,-Xlint:ignore"/> + <run class="AnnotatedType"> + <stderr> + <line text="Color identified on execution(void AnnotatedType.m())"/> + <line text="Fruit identified on execution(void AnnotatedType.m())"/> + <line text="m() running"/> + </stderr> + </run> + </ajc-test> + + + <!--ajc-test dir="java5/annotations/declare" title="declare @type - annotations with different targets - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaTypeBin5.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="error" line="15" text="The annotation @ColorM is disallowed for this location"/> + <message kind="error" line="16" text="The annotation @ColorC is disallowed for this location"/> + <message kind="error" line="18" text="The annotation @ColorF is disallowed for this location"/> + <message kind="error" line="19" text="The annotation @ColorP is disallowed for this location"/> + <message kind="error" line="20" text="The annotation @ColorL is disallowed for this location"/> + <message kind="error" line="21" text="The annotation @ColorPkg is disallowed for this location"/> + </weave> + <run class="BaseTypes"> + <stderr> + <line text="ColorT identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test--> + + <ajc-test dir="java5/annotations/declare" title="declare @type - annotations with different targets - source weaving"> + <compile files="BaseTypes.java,DecaTypeBin5.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="error" line="15" text="The annotation @ColorM is disallowed for this location"/> + <message kind="error" line="16" text="The annotation @ColorC is disallowed for this location"/> + <message king="error" line="17" text="A is not a valid target for annotation ColorA"/> + <message kind="error" line="18" text="The annotation @ColorF is disallowed for this location"/> + <message kind="error" line="19" text="The annotation @ColorP is disallowed for this location"/> + <message kind="error" line="20" text="The annotation @ColorL is disallowed for this location"/> + <message kind="error" line="21" text="The annotation @ColorPkg is disallowed for this location"/> + </compile> + </ajc-test> + + <!--ajc-test dir="java5/annotations/declare" title="declare @type - annotations with different targets (using type patterns) - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaTypeBin6.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="warning" line="15" text="A is not a valid target for annotation ColorM"/> + <message kind="warning" line="16" text="A is not a valid target for annotation ColorC"/> + <message kind="warning" line="17" text="A is not a valid target for annotation ColorL"/> + <message kind="warning" line="17" text="B is not a valid target for annotation ColorL"/> + <message kind="warning" line="17" text="C is not a valid target for annotation ColorL"/> + </weave> + <run class="BaseTypes"> + <stderr> + <line text="ColorT identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="ColorT identified on execution(void A.m())"/> + <line text="A.m() running"/> + <line text="ColorT identified on execution(void A.m())"/> + <line text="A.m() running"/> + </stderr> + </run> + </ajc-test--> + + <ajc-test dir="java5/annotations/declare" title="declare @type - annotations with different targets (using type patterns) - source weaving"> + <compile files="BaseTypes.java,DecaTypeBin6.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="error" line="15" text="The annotation @ColorM is disallowed for this location"/> + <message kind="error" line="16" text="The annotation @ColorC is disallowed for this location"/> + <message kind="error" line="17" text="The annotation @ColorL is disallowed for this location"/> + <message kind="error" line="18" text="The annotation @ColorF is disallowed for this location"/> + </compile> + </ajc-test> + + + <ajc-test dir="java5/annotations/declare" title="declare @type - complex decp decAtType interactions - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaTypeBin7.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + </weave> + <run class="BaseTypes"> + <stderr> + <line text="Color identified on execution(void A.m())"/> + <line text="Fruit identified on execution(void A.m())"/> + <line text="Chocolate identified on execution(void A.m())"/> + <line text="M1 at execution(void A.m())"/> + <line text="M2 at execution(void A.m())"/> + <line text="M3 at execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Fruit identified on execution(void B.m())"/> + <line text="Chocolate identified on execution(void B.m())"/> + <line text="M1 at execution(void B.m())"/> + <line text="M2 at execution(void B.m())"/> + <line text="M3 at execution(void B.m())"/> + <line text="B.m() running"/> + <line text="Fruit identified on execution(void C.m())"/> + <line text="Chocolate identified on execution(void C.m())"/> + <line text="M1 at execution(void C.m())"/> + <line text="M2 at execution(void C.m())"/> + <line text="M3 at execution(void C.m())"/> + <line text="C.m() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - complex decp decAtType interactions - source weaving"> + <compile files="BaseTypes.java,DecaTypeBin7.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="BaseTypes"> + <stderr> + <line text="Color identified on execution(void A.m())"/> + <line text="Fruit identified on execution(void A.m())"/> + <line text="Chocolate identified on execution(void A.m())"/> + <line text="M1 at execution(void A.m())"/> + <line text="M2 at execution(void A.m())"/> + <line text="M3 at execution(void A.m())"/> + <line text="A.m() running"/> + <line text="Fruit identified on execution(void B.m())"/> + <line text="Chocolate identified on execution(void B.m())"/> + <line text="M1 at execution(void B.m())"/> + <line text="M2 at execution(void B.m())"/> + <line text="M3 at execution(void B.m())"/> + <line text="B.m() running"/> + <line text="Fruit identified on execution(void C.m())"/> + <line text="Chocolate identified on execution(void C.m())"/> + <line text="M1 at execution(void C.m())"/> + <line text="M2 at execution(void C.m())"/> + <line text="M3 at execution(void C.m())"/> + <line text="C.m() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - trying to put annotation targetting annos on normal types - source weaving"> + <compile files="BaseTypes.java,DecaTypeBin8.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="error" line="8" text="A is not a valid target for annotation ColorA"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - trying to put annotation targetting annos on normal types - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaTypeBin8.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="error" line="8" text="A is not a valid target for annotation ColorA"/> + </weave> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - trying to put annotation targetting annos on normal types (uses pattern) - source weaving"> + <compile files="BaseTypes.java,DecaTypeBin9.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="warning" line="8" text="A is not a valid target for annotation ColorA"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - trying to put annotation targetting annos on normal types (uses pattern) - binary weaving"> + <weave classesFiles="BaseTypes.java" aspectsFiles="DecaTypeBin9.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="warning" line="8" text="A is not a valid target for annotation ColorA"/> + </weave> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - covering enum and class element values - source weaving"> + <compile files="EnumAndClassValues.aj,FunkyAnnotations.java" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="FunkyAnnotations"> + <stderr> + <line text="hello world"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare @type - covering enum and class element values - binary weaving"> + <weave aspectsFiles="EnumAndClassValues.aj" classesFiles="FunkyAnnotations.java" options="-1.9 -Xdev:Pinpoint" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="FunkyAnnotations"> + <stderr> + <line text="advice running: Red"/> + <line text="advice running: class java.lang.Integer"/> + <line text="method running"/> + </stderr> + </run> + </ajc-test> + + + <!-- ======================================================================================= --> + <!-- declare annotation (@field) --> + <!-- ======================================================================================= --> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - simple source weaving"> + <compile files="Base.java,Colored.java,AtField1.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Colored field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - simple binary weaving"> + <weave classesFiles="Base.java,Colored.java" aspectsFiles="AtField1.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Colored field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - two the same on one - source weaving"> + <compile files="Base.java,Colored.java,TwoOnOneField.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="warning" text="int Base.publicIntField - already has an annotation of type Colored"/> + </compile> + <run class="Base"> + <stderr> + <line text="Colored field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - two the same on one - binary weaving"> + <weave classesFiles="Base.java,Colored.java" aspectsFiles="TwoOnOneField.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="warning" text="int Base.publicIntField - already has an annotation of type Colored"/> + </weave> + <run class="Base"> + <stderr> + <line text="Colored field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - two different on one - source weaving"> + <compile files="Base.java,Colored.java,Fruit.java,TwoOnOneField2.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + </compile> + <run class="Base"> + <stderr> + <line text="Colored field access at set(int Base.publicIntField)"/> + <line text="Fruit field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - two different on one - binary weaving"> + <weave classesFiles="Base.java,Colored.java,Fruit.java" aspectsFiles="TwoOnOneField2.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + </weave> + <run class="Base"> + <stderr> + <line text="Colored field access at set(int Base.publicIntField)"/> + <line text="Fruit field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - wrong target - source weaving"> + <compile files="Base.java,Colored.java,WrongTarget.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="error" line="8" text="The annotation @MethodColoring is disallowed for this location"/> + <message kind="error" line="9" text="The annotation @TypeColoring is disallowed for this location"/> + <!-- xlint warnings that were put in as part of fix for pr115252 --> + <message kind="warning" line="13" text="does not match because annotation @MethodColoring has @Target{ElementType.METHOD} [Xlint:unmatchedTargetKind]"/> + <message kind="warning" line="16" text="does not match because annotation @TypeColoring has @Target{ElementType.TYPE} [Xlint:unmatchedTargetKind]"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - right target - source weaving"> + <compile files="Base.java,Colored.java,RightTarget.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Colored field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - right target - binary weaving"> + <weave classesFiles="Base.java,Colored.java" aspectsFiles="RightTarget.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Colored field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - recursive application - source weaving"> + <compile files="Base.java,Colored.java,Fruit.java,RecursiveFields.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Fruit field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - recursive application - binary weaving"> + <weave classesFiles="Base.java,Colored.java,Fruit.java" aspectsFiles="RecursiveFields.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Fruit field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - recursive application (other order) - source weaving"> + <compile files="Base.java,Colored.java,Fruit.java,RecursiveFields2.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Fruit field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atfield" title="declare @field - recursive application (other order) - binary weaving"> + <weave classesFiles="Base.java,Colored.java,Fruit.java" aspectsFiles="RecursiveFields2.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Fruit field access at set(int Base.publicIntField)"/> + </stderr> + </run> + </ajc-test> + <!-- incorrect target type for annotation on field --> + + <!-- incorrect target type for annotation on method --> + <!-- two annotations on one method --> + <!-- two of the same annotation on one method - error --> + <!-- two of the same on one using pattern spec - lint --> + +<!-- need some incorrect signatures in the declare @statements - e.g. declare @constructor: public Base(int): XXX; will blow things up as it uses Base rather than new --> + <!-- incorrect target type for annotation on ctor --> + <!-- two annotations on one ctor --> + <!-- two of the same annotation on one ctor - error --> + <!-- two of the same on one using pattern spec - lint --> + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @method - simple source weaving"> + <compile files="Base.java,Colored.java,AtMethod1.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Colored method invocation at call(void Base.m1())"/> + <line text="m1() running"/> + <line text="m2() running"/> + <line text="m3() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @method - simple binary weaving"> + <weave classesFiles="Base.java,Colored.java" aspectsFiles="AtMethod1.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Colored method invocation at call(void Base.m1())"/> + <line text="m1() running"/> + <line text="m2() running"/> + <line text="m3() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @constructor - simple source weaving"> + <compile files="Base.java,Colored.java,AtCtor1.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Colored constructor invocation at call(Base(int))"/> + <line text="m1() running"/> + <line text="m2() running"/> + <line text="m3() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @constructor - simple binary weaving"> + <weave classesFiles="Base.java,Colored.java" aspectsFiles="AtCtor1.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Colored constructor invocation at call(Base(int))"/> + <line text="m1() running"/> + <line text="m2() running"/> + <line text="m3() running"/> + </stderr> + </run> + </ajc-test> + + + <!-- These tests verify both @method and @ctor behavior - they are so similar it is OK to have them together... --> + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @method @ctor - wrong target - source weaving"> + <compile files="Base.java,Colored.java,WrongTarget.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="error" line="8" text="The annotation @MethodColoring is disallowed for this location"/> + <message kind="error" line="9" text="The annotation @TypeColoring is disallowed for this location"/> + <message kind="error" line="10" text="The annotation @MethodColoring is disallowed for this location"/> + <message kind="error" line="11" text="The annotation @TypeColoring is disallowed for this location"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @method @ctor - right target - source weaving"> + <compile files="Base.java,Colored.java,RightTarget.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Colored ctor call at call(Base(int))"/> + <line text="Colored method call at call(void Base.m1())"/> + <line text="m1() running"/> + <line text="m2() running"/> + <line text="m3() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @method @ctor - right target - binary weaving"> + <weave classesFiles="Base.java,Colored.java" aspectsFiles="RightTarget.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="Base"> + <stderr> + <line text="Colored ctor call at call(Base(int))"/> + <line text="Colored method call at call(void Base.m1())"/> + <line text="m1() running"/> + <line text="m2() running"/> + <line text="m3() running"/> + </stderr> + </run> + </ajc-test> + +<!-- check @method/@ctor/@field recursively applying, can only happen if a pattern for one of them includes an annotation --> + + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @method @ctor - two the same on one - source weaving"> + <compile files="Base.java,Colored.java,TwoOnOneMember.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="warning" text="void Base.m1() - already has an annotation of type Colored"/> + <message kind="warning" text="void Base.<init>(int) - already has an annotation of type Colored"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @method @ctor - two the same on one - binary weaving"> + <weave classesFiles="Base.java,Colored.java" aspectsFiles="TwoOnOneMember.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + <message kind="warning" text="void Base.m1() - already has an annotation of type Colored"/> + <message kind="warning" text="void Base.<init>(int) - already has an annotation of type Colored"/> + </weave> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @method @ctor - two different on one - source weaving"> + <compile files="Base.java,Colored.java,Fruit.java,TwoOnOneMember2.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + </compile> + <run class="Base"> + <stderr> + <line text="Colored ctor call at Base.java:11"/> + <line text="Fruit ctor call at Base.java:11"/> + <line text="Colored method call at Base.java:15"/> + <line text="Fruit method call at Base.java:15"/> + <line text="m1() running"/> + <line text="m2() running"/> + <line text="m3() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare/atmethodctor" title="declare @method @ctor - two different on one - binary weaving"> + <weave classesFiles="Base.java,Colored.java,Fruit.java" aspectsFiles="TwoOnOneMember2.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> + </weave> + <run class="Base"> + <stderr> + <line text="Colored ctor call at Base.java:11"/> + <line text="Fruit ctor call at Base.java:11"/> + <line text="Colored method call at Base.java:15"/> + <line text="Fruit method call at Base.java:15"/> + <line text="m1() running"/> + <line text="m2() running"/> + <line text="m3() running"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/declare" title="declare all annotations on one class - source weaving"> + <compile files="DeathByAnnotations.aj" options="-1.9,-emacssym" xlintfile="ignoreTypeNotExposed.properties"/> + <run class="p.q.DeathByAnnotations"/> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- annotation binding with ITDs --> + <!-- ======================================================================================= --> + + <ajc-test dir="java5/annotations/binding" title="simple binding annotation values where itd method is annotated"> + <compile files="BindingWithAnnotatedItds1.aj" options="-1.9"/> + <run class="BindingWithAnnotatedItds1"> + <stderr> + <line text="Found apple at jp execution(int A.m()) (BindingWithAnnotatedItds1.aj:8)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" title="simple binding annotation values where itd field is annotated"> + <compile files="BindingWithAnnotatedItds2.aj" options="-1.9"/> + <run class="BindingWithAnnotatedItds2"> + <stderr> + <line text="Found banana at jp set(int A.i) (BindingWithAnnotatedItds2.aj:16)"/> + <line text="Found apple at jp set(String A.j) (BindingWithAnnotatedItds2.aj:17)"/> + <line text="Found orange at jp set(int[] A.k) (BindingWithAnnotatedItds2.aj:18)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" title="simple binding annotation values where itd ctor is annotated"> + <compile files="BindingWithAnnotatedItds3.aj" options="-1.9"/> + <run class="BindingWithAnnotatedItds3"> + <stderr> + <line text="Found pear at jp execution(A(String)) (BindingWithAnnotatedItds3.aj:8)"/> + <line text="Found orange at jp execution(A(int)) (BindingWithAnnotatedItds3.aj:10)"/> + <line text="Found tomato at jp execution(A(boolean)) (BindingWithAnnotatedItds3.aj:12)"/> + </stderr> + </run> + </ajc-test> + + <!-- ======================================================================================= --> + <!-- declare annotation targetting ITDs --> + <!-- ======================================================================================= --> + + + <ajc-test dir="java5/annotations/binding" title="simple binding annotation values where itd method is annotated via declare"> + <compile files="BindingWithDeclaredAnnotationItds1.aj" options="-1.9,-emacssym"/> + <run class="BindingWithDeclaredAnnotationItds1"> + <stderr> + <line text="Found orange at jp call(int A.m()) (BindingWithDeclaredAnnotationItds1.aj:16)"/> + <line text="Found orange at jp execution(int A.m()) (BindingWithDeclaredAnnotationItds1.aj:8)"/> + <line text="Found banana at jp call(int A.n()) (BindingWithDeclaredAnnotationItds1.aj:17)"/> + <line text="Found banana at jp execution(int A.n()) (BindingWithDeclaredAnnotationItds1.aj:10)"/> + <line text="Found tomato at jp call(int A.o()) (BindingWithDeclaredAnnotationItds1.aj:18)"/> + <line text="Found tomato at jp execution(int A.o()) (BindingWithDeclaredAnnotationItds1.aj:12)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" title="simple binding annotation values where itd field is annotated via declare"> + <compile files="BindingWithDeclaredAnnotationItds2.aj" options="-1.9,-emacssym"/> + <run class="BindingWithDeclaredAnnotationItds2"> + <stderr> + <line text="Found orange at jp set(int A.i) (BindingWithDeclaredAnnotationItds2.aj:16)"/> + <line text="Found banana at jp set(String A.j) (BindingWithDeclaredAnnotationItds2.aj:17)"/> + <line text="Found apple at jp set(boolean[] A.k) (BindingWithDeclaredAnnotationItds2.aj:18)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" title="simple binding annotation values where itd field is annotated multiple times via declare"> + <compile files="BindingWithDeclaredAnnotationItds3.aj" options="-1.9,-emacssym"/> + <run class="BindingWithDeclaredAnnotationItds3"> + <stderr> + <line text="Found fruit orange at jp set(int A.i) (BindingWithDeclaredAnnotationItds3.aj:13)"/> + <line text="Found drink margarita at jp set(int A.i) (BindingWithDeclaredAnnotationItds3.aj:13)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/annotations/binding" title="simple binding annotation values where itd ctor is annotated via declare"> + <compile files="BindingWithDeclaredAnnotationItds4.aj" options="-1.9,-emacssym"/> + <run class="BindingWithDeclaredAnnotationItds4"> + <stderr> + <line text="Found pear at jp execution(A(String)) (BindingWithDeclaredAnnotationItds4.aj:8)"/> + <line text="Found orange at jp execution(A(int)) (BindingWithDeclaredAnnotationItds4.aj:10)"/> + <line text="Found tomato at jp execution(A(boolean)) (BindingWithDeclaredAnnotationItds4.aj:12)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/suppressedWarnings" title="SuppressAjWarnings raised during matching"> + <compile files="SuppressionDuringMatching.aj" options="-1.9"> + </compile> + </ajc-test> + + <!-- ============================================================== --> + + <ajc-test dir="options/aspectpath" title="dirs on aspectpath"> + <compile files="MyAspect.aj" options="-d out"/> + <compile files="MyClass.java" options="-aspectpath out"> + <message kind="warning" line="3" text="a method"/> + </compile> + </ajc-test> + + <!-- ============================================================== --> + <!-- Start of generics tests --> + <!-- ============================================================== --> + + <ajc-test dir="java5/generics" title="ITD with parameterized type" vm="1.5"> + <compile files="ITDReturningParameterizedType.aj" options="-1.9"/> + <run class="ITDReturningParameterizedType"/> + </ajc-test> + + <ajc-test dir="java5/annotations/binding/bugs" title="AtArgs causes a VerifyError: Unable to pop operand off an empty stack" vm="1.5"> + <compile files="Test3.java" options="-1.9"/> + <run class="Test3"/> + </ajc-test> + + <ajc-test dir="java5/generics/bugs/pr91267" title="NPE using generic methods in aspects 1" vm="1.5"> + <compile files="TestBug1.aj" options="-1.9"/> + <run class="TestBug1"/> + </ajc-test> + + <ajc-test dir="java5/generics/bugs/pr91267" title="NPE using generic methods in aspects 2" vm="1.5"> + <compile files="TestBug2.aj" options="-1.9"/> + <run class="TestBug2"/> + </ajc-test> + + <ajc-test dir="java5/generics/bugs" title="Generics problem with Set" vm="1.5"> + <compile files="PR91053.aj" options="-1.9"/> + <run class="PR91053"/> + </ajc-test> + + <ajc-test dir="java5/generics/bugs" title="Compilation error on generic member introduction" vm="1.5"> + <compile files="PR87282.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/bugs" title="Parameterized types on introduced fields not correctly recognized" vm="1.5"> + <compile files="PR88606.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" title="enum called Enum, annotation called Annotation, etc"> + <compile files="PR90827.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" title="Internal compiler error"> + <compile files="PR86832.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" title="Exploding compile time with if() statements in pointcut"> + <compile files="PR94086.aj" options="-1.9"/> + </ajc-test> + + <!-- generic abstract aspects... --> + + <ajc-test dir="java5/generics/genericaspects" title="static pointcut parameterization suite"> + <compile files="GenericAspectPointcuts.aj" options="-1.9"> + <message kind="warning" line="62" text="kinded-returning-ok"/> + <message kind="warning" line="52" text="kinded-declaring-ok"/> + <message kind="warning" line="67" text="kinded-declaring-ok"/> + <message kind="warning" line="50" text="kinded-params-ok"/> + <message kind="warning" line="56" text="kinded-throws-ok"/> + <message kind="warning" line="64" text="and-ok"/> + <message kind="warning" line="60" text="or-ok"/> + <message kind="warning" line="64" text="or-ok"/> + <message kind="warning" line="67" text="or-ok"/> + <message kind="warning" line="1" text="not-ok"/> + <message kind="warning" line="42" text="not-ok"/> + <message kind="warning" line="72" text="not-ok"/> + <message kind="warning" line="59" text="within-ok"/> + <message kind="warning" line="64" text="withincode-ok"/> + <message kind="warning" line="53" text="handler-ok"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="dynamic pointcut parameterization suite"> + <compile files="GenericAspectRuntimePointcuts.aj" options="-1.9"> + </compile> + <run class="GenericAspectRuntimePointcuts"> + <stdout> + <line text="target-ok an X execution(void X.foo())"/> + <line text="@this-ok @MyAnnotation(value=my-value) execution(void X.foo())"/> + <line text="@target-ok @MyAnnotation(value=my-value) execution(void X.foo())"/> + <line text="@within-ok @MyAnnotation(value=my-value) execution(void X.foo())"/> + <line text="cflow-ok an X a Y set(Y X.y)"/> + <line text="@annotation-ok-sub @MyAnnotation(value=bar) execution(void X.bar())"/> + <line text="@annotation-ok @MyAnnotation(value=bar) execution(void X.bar())"/> + <line text="target-ok an X execution(void X.bar())"/> + <line text="@this-ok @MyAnnotation(value=my-value) execution(void X.bar())"/> + <line text="@target-ok @MyAnnotation(value=my-value) execution(void X.bar())"/> + <line text="@within-ok @MyAnnotation(value=my-value) execution(void X.bar())"/> + <line text="@args-ok @MyAnnotation(value=my-value) execution(void Y.foo(X))"/> + <line text="args-ok an X execution(void Y.foo(X))"/> + <line text="this-ok a Y execution(void Y.foo(X))"/> + <line text="@this-ok @MyAnnotation(value=on Y) execution(void Y.foo(X))"/> + <line text="@target-ok @MyAnnotation(value=on Y) execution(void Y.foo(X))"/> + <line text="@within-ok @MyAnnotation(value=on Y) execution(void Y.foo(X))"/> + <line text="@annotation-ok-sub @MyAnnotation(value=my-value) execution(X Y.bar())"/> + <line text="@annotation-ok @MyAnnotation(value=my-value) execution(X Y.bar())"/> + <line text="this-ok a Y execution(X Y.bar())"/> + <line text="@this-ok @MyAnnotation(value=on Y) execution(X Y.bar())"/> + <line text="@target-ok @MyAnnotation(value=on Y) execution(X Y.bar())"/> + <line text="@within-ok @MyAnnotation(value=on Y) execution(X Y.bar())"/> + <line text="@withincode-ok @MyAnnotation(value=my-value) get(X Y.x)"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="reference to pointcut in generic class"> + <compile files="PointcutsInGenericClasses.aj" options="-1.9"> + <message kind="warning" line="16" text="a match"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="reference to non-parameterized pointcut in generic class"> + <compile files="PointcutsInGenericClasses2.aj" options="-1.9"> + <message kind="error" line="10" text="cannot use a raw type reference to refer to a pointcut in a generic type (use a parameterized reference instead)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="declare parents parameterized"> + <compile files="DecPGenericTest.aj" options="-1.9"> + <message kind="warning" line="16" text="success"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="declare precedence parameterized"> + <compile files="DecPrecedenceGenericTest.aj" options="-1.9 -Xdev:Pinpoint"> + </compile> + <run class="DecPrecedenceGenericTest"> + <stdout> + <line text="A1"/> + <line text="A2"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="declare annotation parameterized"> + <compile files="DecAnnGenericTest.aj" options="-1.9"> + <message kind="warning" line="18" text="@type ok"/> + <message kind="warning" line="20" text="@field ok"/> + <message kind="warning" line="22" text="@constructor ok"/> + <message kind="warning" line="24" text="@method ok"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="multi-level generic abstract aspects"> + <compile files="MultiLevelGenericTest.aj" options="-1.9"> + <message kind="warning" line="23" text="base match"/> + <message kind="warning" line="23" text="middle match"/> + <message kind="warning" line="23" text="top match"/> + </compile> + </ajc-test> + <!-- generic bugs --> + + <ajc-test dir="java5/generics/bugs" title="ITD method with generic arg"> + <compile files="PR97763.aj" options="-1.9"/> + <run class="PR97763"> + <stderr> + <line text="Number of entries=2"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="bugs150" title="NPE at ClassScope.java:660 when compiling generic class"> + <compile files="PR95993.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/bugs" title="Problems resolving type name inside generic class"> + <compile files="PR95992.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150" pr="100227" title="inner class with generic enclosing class"> + <compile files="pr100227.aj" options="-1.9"/> + <run class="pr100227"> + <stderr> + <line text="Outer.Inner.inner=2"/> + <line text="Outer.Inner.p() executing"/> + <line text="Generic_Outer.Inner.inner=4"/> + <line text="Generic_Outer.Inner.p() executing"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="bugs150" pr="100260" title="methods inherited from a generic parent"> + <compile files="pr100260.aj" options="-1.9"/> + <run class="pr100260"/> + </ajc-test> + + <!-- end of generic bugs --> + + <!-- generic aspects --> + + <ajc-test dir="java5/generics/genericaspects" title="generic aspects - 1"> + <compile files="GenericAspect1.aj" options="-1.9"> + <message kind="error" line="2" text="only abstract aspects can have type parameters"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="generic aspects - 2"> + <compile files="GenericAspect2.aj" options="-1.9"> + <message kind="error" line="9" text="a generic super-aspect must be fully parameterized in an extends clause"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="generic aspects - 3"> + <compile files="GenericAspect3.aj" options="-1.9"/> + <run class="GenericAspect3"> + <stderr> + <line text="A"/> + <line text="B"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="generic aspects - 4"> + <compile files="ParentChildRelationship.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="generic aspect with declare warning using type vars"> + <compile files="DeclareWarningInGenericAspect.aj" options="-1.9"> + <message kind="warning" line="16" text="this method takes a T!"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="generic aspect with execution advice using type vars"> + <compile files="ExecutionAdviceInGenericAspect.aj" options="-1.9"> + </compile> + <run class="ExecutionAdviceInGenericAspect"> + <stdout> + <line text="I matched at execution(void C.foo(String))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="generic aspect with anonymous pointcut"> + <compile files="AnonymousPointcutInGenericAspect.aj" options="-1.9"> + </compile> + <run class="AnonymousPointcutInGenericAspect"> + <stdout> + <line text="I matched at execution(void C.foo(String))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="generic aspect declare parents"> + <compile files="DeclareParentsWithTypeVars.aj" options="-1.9"> + </compile> + <run class="DeclareParentsWithTypeVars"> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/genericaspects" title="generic aspect declare soft"> + <compile files="DeclareSoftWithTypeVars.aj" options="-1.9"> + </compile> + <run class="DeclareSoftWithTypeVars"> + <stderr> + <line text="handled exception: io, io, it's off to work we go..."/> + <line text="Successfully converted to domain exception"/> + </stderr> + </run> + </ajc-test> + + <!-- ajdk example --> + <ajc-test dir="java5/generics/genericaspects" title="generic aspects - 5 (ajdk)"> + <compile files="Blob.java,BlobContainment.aj,ParentChildRelationship.aj" options="-1.9"/> + <run class="BlobContainment"/> + </ajc-test> + + <!-- same as above but all types in one file --> + <ajc-test dir="java5/generics/genericaspects" title="generic aspects - 6 (ajdk)"> + <compile files="TheBigOne.java" options="-1.9"/> + <run class="TheBigOne"/> + </ajc-test> + + <!-- end of generic aspects --> + + <!-- generic ITDs --> + + <ajc-test dir="java5/generics/itds" title="ITDs on generic type"> + <compile files="Parse5.java" options="-1.9"> + <message kind="error" line="9"/> + <message kind="error" line="11"/> + <message kind="error" line="13"/> + <message kind="error" line="15"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="itd of non static member"> + <compile files="A.java" options="-1.9"/> + <run class="A"> + <stderr> + <line text="min(2,4)=>2"/> + <line text="max(2,4)=>4"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="itd of static member"> + <compile files="B.java" options="-1.9"/> + <run class="B"> + <stderr> + <line text="min(2,4)=>2"/> + <line text="max(2,4)=>4"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="itd using type parameter"> + <compile files="C.java" options="-1.9"/> + <run class="C"> + <stderr> + <line text="fillthisin..."/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="itd incorrectly using type parameter"> + <compile files="D.java" options="-1.9"/> + <run class="D"> + <stderr> + <line text="fillthisin..."/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="static generic method itd"> + <compile files="StaticGenericMethodITD.aj" options="-1.9"/> + <run class="StaticGenericMethodITD"> + <stderr> + <line text="First=10"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic ctor itd - 1"> + <compile files="GenericCtorITD1.aj" options="-1.9"/> + <run class="GenericCtorITD1"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic ctor itd - 2"> + <compile files="GenericCtorITD2.aj" options="-1.9"/> + <run class="GenericCtorITD2"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic ctor itd - 3"> + <compile files="GenericCtorITD3.aj" options="-1.9"/> + <run class="GenericCtorITD3"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="parameterized method itd - 1"> + <compile files="ParameterizedMethodITD1.aj" options="-1.9"/> + <run class="ParameterizedMethodITD1"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="parameterized method itd - 2"> + <compile files="ParameterizedMethodITD2.aj" options="-1.9"> + <message kind="error" line="9" text="The method simple(List<? extends Number>) in the type Base is not applicable for the arguments (List<A>)"/> + </compile> + </ajc-test> + + + <ajc-test dir="java5/generics/itds" title="parameterized method itd - 3"> + <compile files="ParameterizedMethodITD3.aj" options="-1.9"> + <message kind="error" line="9" text="The method simple(List<? super A>) in the type Base is not applicable for the arguments (List<B>)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="parameterized method itd - 4"> + <compile files="ParameterizedMethodITD4.aj" options="-1.9"/> + <run class="ParameterizedMethodITD4"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 1"> + <compile files="GenericMethodITD1.aj" options="-1.9"/> + <run class="GenericMethodITD1"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 2"> + <compile files="GenericMethodITD2.aj" options="-1.9"> + <message kind="error" line="9" text="Bound mismatch: The generic method simple(List<? extends E>) of type Base is not applicable for the arguments (List<A>). The inferred type A is not a valid substitute for the bounded parameter <E extends Number>"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 3"> + <compile files="GenericMethodITD3.aj" options="-1.9"/> + <run class="GenericMethodITD3"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 4"> + <compile files="GenericMethodITD4.aj" options="-1.9"/> + <run class="GenericMethodITD4"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 5"> + <compile files="GenericMethodITD5.aj" options="-1.9"> + <message kind="error" line="10" text="The method simple(List<E>, List<E>) in the type Base is not applicable for the arguments (List<A>, List<B>)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 6"> + <compile files="GenericMethodITD6.aj" options="-1.9"/> + <run class="GenericMethodITD6"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 7"> + <compile files="GenericMethodITD7.aj" options="-1.9"/> + <run class="GenericMethodITD7"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 8"> + <compile files="GenericMethodITD8.aj" options="-1.9"> + <message kind="error" line="10" text="The method simple(List<E>, List<? extends E>) in the type Base is not applicable for the arguments (List<Number>, List<String>)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 9"> + <compile files="GenericMethodITD9.aj" options="-1.9"/> + <run class="GenericMethodITD9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 10"> + <compile files="GenericMethodITD10.aj" options="-1.9"> + <message kind="error" line="10" text="Bound mismatch: The generic method crazy(List<R>) of type Base is not applicable for the arguments (List<A>). The inferred type A is not a valid substitute for the bounded parameter <R extends Comparable<? super R>>"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 11"> + <compile files="GenericMethodITD11.aj" options="-1.9"/> + <run class="GenericMethodITD11"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 12"> + <compile files="GenericMethodITD12.aj" options="-1.9"> + <message kind="error" line="10" text="Bound mismatch: The generic method crazy(List<R>) of type Base is not applicable for the arguments (List<A>). The inferred type A is not a valid substitute for the bounded parameter <R extends Foo<? extends R>>"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 13"> + <compile files="GenericMethodITD13.aj" options="-1.9"/> + <run class="GenericMethodITD13"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 14"> + <compile files="GenericMethodITD14.aj" options="-1.9"> + <message kind="error" line="10" text="Bound mismatch: The generic method crazy(List<R>) of type Base is not applicable for the arguments (List<A>). The inferred type A is not a valid substitute for the bounded parameter <R extends Foo<? super R>>"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic method itd - 15"> + <compile files="GenericMethodITD15.aj" options="-1.9"/> + <run class="GenericMethodITD15"/> + </ajc-test> + + <!-- visibility --> + + <ajc-test dir="java5/generics/itds/visibility" title="public itds"> + <compile files="PublicITDs.aj" options="-1.9"/> + <run class="PublicITDs"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/visibility" title="private itds"> + <compile files="PrivateITDs.aj" options="-1.9"/> + <run class="PrivateITDs"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/visibility" title="package itds"> + <compile files="PackageITDs.aj" options="-1.9"/> + <run class="PackageITDs"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/visibility" title="public itds with errors"> + <compile files="PublicITDsErrors.aj" options="-1.9"> + <message kind="error" line="13" text="The method publicMethod2(List<R>, List<R>) in the type Base is not applicable for the arguments (List<Double>, List<Float>)"/> + <message kind="error" line="15" text="The constructor Base(List<Double>, Map<Integer,String>) is undefined"/> + </compile> + </ajc-test> + + <!-- targetting different types --> + + <ajc-test dir="java5/generics/itds/differingTargets" title="targetting interface"> + <compile files="TargettingInterface.aj" options="-1.9"/> + <run class="TargettingInterface"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/differingTargets" title="targetting aspect"> + <compile files="TargettingAspect.aj" options="-1.9"/> + <run class="TargettingAspect"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/differingTargets" title="targetting class"> + <compile files="TargettingClass.aj" options="-1.9"/> + <run class="TargettingClass"/> + </ajc-test> + + <!-- sharing type variables between the ITD and the generic type --> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type - 1"> + <compile files="FieldA.aj" options="-1.9"/> + <run class="FieldA"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type - 2"> + <compile files="FieldB.aj" options="-1.9"> + <message kind="error" line="16" text="Incorrect number of type parameters supplied. The generic type Base<N,M> has 2 type parameters, not 1."/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type - 3"> + <compile files="FieldC.aj" options="-1.9"/> + <run class="FieldC"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type - 4"> + <compile files="FieldD.aj" options="-1.9"/> + <run class="FieldD"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type - 5"> + <compile files="FieldE.aj" options="-1.9"/> + <run class="FieldE"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type - 6"> + <compile files="FieldF.aj" options="-1.9"/> + <run class="FieldF"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type - 7"> + <compile files="FieldG.aj" options="-1.9"/> + <run class="FieldG"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type - 8"> + <compile files="FieldH.aj" options="-1.9"/> + <run class="FieldH"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type - 9"> + <compile files="FieldI.aj" options="-1.9"> + <message kind="error" line="7" text="Type mismatch: cannot convert from List<String> to List<Integer>"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type -10"> + <compile files="FieldJ.aj" options="-1.9"/> + <run class="FieldJ"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type -11"> + <compile files="FieldK.aj" options="-1.9"/> + <run class="FieldK"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type -12"> + <compile files="FieldL.aj" options="-1.9"/> + <run class="FieldL"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type -13"> + <compile files="FieldM.aj" options="-1.9"/> + <run class="FieldM"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type -14"> + <compile files="FieldN.aj" options="-1.9"> + <message kind="error" line="11" text="Type parameters can not be specified in the ITD target type - the target type I is not generic."/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type -15"> + <compile files="FieldO.aj" options="-1.9"> + <message kind="error" line="11" text="Intertype declarations can only be made on the generic type, not on a parameterized type. The name 'String' cannot be used as a type parameter, since it refers to a real type."/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type -16"> + <compile files="FieldP.aj" options="-1.9"> + <message kind="error" line="10" text="static intertype field declarations cannot refer to type variables from the target generic type"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd using type variable from target type -17"> + <compile files="FieldQ.aj" options="-1.9"/> + <run class="FieldQ"/> + </ajc-test> + + <!-- Now intertype declared methods on generic types that use the target types type vars --> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - A1"> + <compile files="MethodA.aj" options="-1.9"/> + <run class="MethodA"/> + </ajc-test> + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - A2"> + <compile files="MethodA2.aj" options="-1.9"/> + <run class="MethodA2"/> + </ajc-test> + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - A3"> + <compile files="MethodA3.aj" options="-1.9"/> + <run class="MethodA3"/> + </ajc-test> + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - A4"> + <compile files="MethodA4.aj" options="-1.9"/> + <run class="MethodA4"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - B1"> + <compile files="MethodB.aj" options="-1.9"> + <message kind="error" line="16" text="Incorrect number of type parameters supplied. The generic type Base<N,M> has 2 type parameters, not 1."/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - C1"> + <compile files="MethodC.aj" options="-1.9"/> + <run class="MethodC"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - D1"> + <compile files="MethodD.aj" options="-1.9"/> + <run class="MethodD"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - E1"> + <compile files="MethodE.aj" options="-1.9"/> + <run class="MethodE"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - F1"> + <compile files="MethodF.aj" options="-1.9"/> + <run class="MethodF"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - G1"> + <compile files="MethodG.aj" options="-1.9"/> + <run class="MethodG"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - H1"> + <compile files="MethodH.aj" options="-1.9"/> + <run class="MethodH"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - I1"> + <compile files="MethodI.aj" options="-1.9"> + <message kind="error" line="6" text="Type mismatch: cannot convert from List<Integer> to List<String>"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - I2"> + <compile files="MethodI2.aj" options="-1.9"> + <message kind="error" line="7" text="The method m(List<Integer>) in the type Base<Integer> is not applicable for the arguments (List<String>)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - J1"> + <compile files="MethodJ.aj" options="-1.9"/> + <run class="MethodJ"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - K1"> + <compile files="MethodK.aj" options="-1.9"/> + <run class="MethodK"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - L1"> + <compile files="MethodL.aj" options="-1.9"/> + <run class="MethodL"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - M1"> + <compile files="MethodM.aj" options="-1.9"/> + <run class="MethodM"/> + </ajc-test> + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - M2"> + <compile files="MethodM2.aj" options="-1.9"/> + <run class="MethodM2"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - N1"> + <compile files="MethodN.aj" options="-1.9"> + <message kind="error" line="11" text="Type parameters can not be specified in the ITD target type - the target type I is not generic."/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - O1"> + <compile files="MethodO.aj" options="-1.9"> + <message kind="error" line="11" text="Intertype declarations can only be made on the generic type, not on a parameterized type. The name 'String' cannot be used as a type parameter, since it refers to a real type."/> + </compile> + </ajc-test> + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - O2"> + <compile files="MethodO2.aj" options="-1.9"> + <message kind="error" line="11" text="Intertype declarations can only be made on the generic type, not on a parameterized type. The name 'String' cannot be used as a type parameter, since it refers to a real type."/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - P1"> + <compile files="MethodP.aj" options="-1.9"/> + <run class="MethodP"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd using type variable from target type - Q1"> + <compile files="MethodQ.aj" options="-1.9"/> + <run class="MethodQ"/> + </ajc-test> + + <!-- Now intertype declared constructors on generic types that use the target types type vars --> + + <ajc-test dir="java5/generics/itds/sharing" title="ctor itd using type variable from target type - A1"> + <compile files="CtorA.aj" options="-1.9"/> + <run class="CtorA"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="ctor itd using type variable from target type - B1"> + <compile files="CtorB.aj" options="-1.9"> + <message kind="error" line="15" text="Incorrect number of type parameters supplied. The generic type Base<N,M> has 2 type parameters, not 1."/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="ctor itd using type variable from target type - C1"> + <compile files="CtorC.aj" options="-1.9"/> + <run class="CtorC"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="ctor itd using type variable from target type - D1"> + <compile files="CtorD.aj" options="-1.9"/> + <run class="CtorD"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="ctor itd using type variable from target type - E1"> + <compile files="CtorE.aj" options="-1.9"/> + <run class="CtorE"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="ctor itd using type variable from target type - F1"> + <compile files="CtorF.aj" options="-1.9"/> + <run class="CtorF"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="ctor itd using type variable from target type - G1"> + <compile files="CtorG.aj" options="-1.9"/> + <run class="CtorG"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="ctor itd using type variable from target type - H1"> + <compile files="CtorH.aj" options="-1.9"/> + <run class="CtorH"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="ctor itd using type variable from target type - I1"> + <compile files="CtorI.aj" options="-1.9"/> + <run class="CtorI"/> + </ajc-test> + + <!-- putting it all together, fields/methods/ctors and decps --> + + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - A"> + <compile files="GenericAspectA.aj" options="-1.9"/> + <run class="GenericAspectA"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - B"> + <compile files="GenericAspectB.aj" options="-1.9"/> + <run class="GenericAspectB"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - C"> + <compile files="GenericAspectC.aj" options="-1.9"/> + <run class="GenericAspectC"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - D"> + <compile files="GenericAspectD.aj" options="-1.9"/> + <run class="GenericAspectD"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - E"> + <compile files="GenericAspectE.aj" options="-1.9"/> + <run class="GenericAspectE"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - F"> + <compile files="GenericAspectF.aj" options="-1.9"/> + <run class="GenericAspectF"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - G"> + <compile files="GenericAspectG.aj" options="-1.9"/> + <run class="GenericAspectG"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - H"> + <compile files="GenericAspectH.aj" options="-1.9"> + <message kind="error" line="7" text="Type java.lang.String does not meet the specification for type parameter 1 (N extends java.lang.Number) in generic type GenericAspect$SimpleI"/> + <!-- see pr133307, shame about this --> + <!--message kind="error" line="16" text="The method m4(String) is undefined for the type Base"/--> + </compile> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - I"> + <compile files="GenericAspectI.aj" options="-1.9"/> + <run class="GenericAspectI"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - J"> + <compile files="GenericAspectJ.aj" options="-1.9"/> + <run class="GenericAspectJ"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - K"> + <compile files="GenericAspectK.aj" options="-1.9"> + <message kind="error" line="7" text="B does not meet the specification for type parameter 1 (L extends java.lang.Number) in generic type GenericAspect$SimpleI"/> + <message kind="error" line="16" text="The method m4(String) is undefined for the type Base"/> + </compile> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - K2"> + <compile files="GenericAspectK2.aj" options="-1.9"> + <message kind="error" line="13" text="The type String is not a valid substitute"/> + </compile> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - L"> + <compile files="GenericAspectL.aj" options="-1.9"/> + <run class="GenericAspectL"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - M"> + <compile files="GenericAspectM.aj" options="-1.9"> + <message kind="error" line="23" text="The method m0(Integer) in the type GenericAspect.SimpleI<Integer> is not applicable for the arguments (String)"/> + <message kind="error" line="24" text="The method m1(List<Integer>) in the type GenericAspect.SimpleI<Integer> is not applicable for the arguments (List<String>)"/> + <message kind="error" line="25" text="Type mismatch: cannot convert from String to Integer"/> + <message kind="error" line="26" text="Type mismatch: cannot convert from List<String> to List<Integer>"/> + </compile> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - N"> + <compile files="GenericAspectN.aj" options="-1.9"/> + <run class="GenericAspectN"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - O"> + <compile files="GenericAspectO.aj" options="-1.9"> + <message kind="error" line="24" text="Cannot make a static reference to the non-static field Bottom.parent"/> + <message kind="error" line="26" text="The method add(Bottom) in the type List<Bottom> is not applicable for the arguments (Top)"/> + <message kind="error" line="27" text="Cannot make a static reference to the non-static field Top.children"/> + </compile> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - P"> + <compile files="GenericAspectP.aj" options="-1.9"/> + <run class="GenericAspectP"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - Q"> + <compile files="GenericAspectQ.aj" options="-1.9"/> + <run class="GenericAspectQ"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - R"> + <compile files="GenericAspectR.aj" options="-1.9"/> + <run class="GenericAspectR"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - S"> + <compile files="GenericAspectS.aj" options="-1.9"/> + <run class="GenericAspectS"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - T"> + <compile files="GenericAspectT.aj" options="-1.9"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - U"> + <compile files="GenericAspectU.aj" options="-1.9"/> + <run class="GenericAspectU"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - V"> + <compile files="GenericAspectV.aj" options="-1.9"/> + <run class="GenericAspectV"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - W"> + <compile files="GenericAspectW.aj" options="-1.9"/> + <run class="GenericAspectW"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - X"> + <compile files="GenericAspectX.aj" options="-1.9"/> + <run class="GenericAspectX"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - Y"> + <compile files="GenericAspectY.aj" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Join point 'method-execution(void ParentChildRelationship$ParentHasChildren.addChild(C))' in Type 'ParentChildRelationship' (GenericAspectY.aj:53) advised by before advice from 'GenericAspectY' (GenericAspectY.aj:101) [with runtime test]"/> + <message kind="weave" text="Extending interface set for type 'Top' (GenericAspectY.aj) to include 'ParentChildRelationship$ParentHasChildren<Bottom>' (GenericAspectY.aj)"/> + <message kind="weave" text="Type 'Top' (GenericAspectY.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectY.aj:'java.util.List<Bottom> ParentChildRelationship$ParentHasChildren.children')"/> + <message kind="weave" text="Type 'Top' (GenericAspectY.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectY.aj:'java.util.List<Bottom> ParentChildRelationship$ParentHasChildren.getChildren()')"/> + <message kind="weave" text="Type 'Top' (GenericAspectY.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectY.aj:'void ParentChildRelationship$ParentHasChildren.addChild(Bottom)')"/> + <message kind="weave" text="Type 'Top' (GenericAspectY.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectY.aj:'void ParentChildRelationship$ParentHasChildren.removeChild(Bottom)')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectY.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectY.aj:'java.util.List<C> ParentChildRelationship$ParentHasChildren.children')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectY.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectY.aj:'java.util.List<C> ParentChildRelationship$ParentHasChildren.getChildren()')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectY.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectY.aj:'void ParentChildRelationship$ParentHasChildren.addChild(C)')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectY.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectY.aj:'void ParentChildRelationship$ParentHasChildren.removeChild(C)')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ChildHasParent' (GenericAspectY.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectY.aj:'P ParentChildRelationship$ChildHasParent.parent')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ChildHasParent' (GenericAspectY.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectY.aj:'P ParentChildRelationship$ChildHasParent.getParent()')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ChildHasParent' (GenericAspectY.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectY.aj:'void ParentChildRelationship$ChildHasParent.setParent(P)')"/> + <message kind="weave" text="Extending interface set for type 'Bottom' (GenericAspectY.aj) to include 'ParentChildRelationship$ChildHasParent<Top>' (GenericAspectY.aj)"/> + <message kind="weave" text="Type 'Bottom' (GenericAspectY.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectY.aj:'Top ParentChildRelationship$ChildHasParent.parent')"/> + <message kind="weave" text="Type 'Bottom' (GenericAspectY.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectY.aj:'Top ParentChildRelationship$ChildHasParent.getParent()')"/> + <message kind="weave" text="Type 'Bottom' (GenericAspectY.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectY.aj:'void ParentChildRelationship$ChildHasParent.setParent(Top)')"/> + </compile> + <run class="GenericAspectY"/> + </ajc-test> + <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - Z"> + <compile files="GenericAspectZ.aj" options="-1.9 -showWeaveInfo"> + <message kind="weave" text="Join point 'method-execution(void ParentChildRelationship$ParentHasChildren.addChild(C))' in Type 'ParentChildRelationship' (GenericAspectZ.aj:53) advised by before advice from 'GenericAspectZ' (GenericAspectZ.aj:95) [with runtime test]"/> + <message kind="weave" text="Join point 'method-execution(void ParentChildRelationship$ParentHasChildren.removeChild(C))' in Type 'ParentChildRelationship' (GenericAspectZ.aj:65) advised by before advice from 'GenericAspectZ' (GenericAspectZ.aj:96) [with runtime test]"/> + + <message kind="weave" text="Extending interface set for type 'Top' (GenericAspectZ.aj) to include 'ParentChildRelationship$ParentHasChildren<Bottom>' (GenericAspectZ.aj)"/> + <message kind="weave" text="Type 'Top' (GenericAspectZ.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectZ.aj:'java.util.List<Bottom> ParentChildRelationship$ParentHasChildren.children')"/> + <message kind="weave" text="Type 'Top' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'java.util.List<Bottom> ParentChildRelationship$ParentHasChildren.getChildren()')"/> + <message kind="weave" text="Type 'Top' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ParentHasChildren.addChild(Bottom)')"/> + <message kind="weave" text="Type 'Top' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ParentHasChildren.removeChild(Bottom)')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectZ.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectZ.aj:'java.util.List<C> ParentChildRelationship$ParentHasChildren.children')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'java.util.List<C> ParentChildRelationship$ParentHasChildren.getChildren()')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ParentHasChildren.addChild(C)')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ParentHasChildren.removeChild(C)')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ChildHasParent' (GenericAspectZ.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectZ.aj:'P ParentChildRelationship$ChildHasParent.parent')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ChildHasParent' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'P ParentChildRelationship$ChildHasParent.getParent()')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ChildHasParent' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ChildHasParent.setParent(P)')"/> + <message kind="weave" text="Extending interface set for type 'Bottom' (GenericAspectZ.aj) to include 'ParentChildRelationship$ChildHasParent<Top>' (GenericAspectZ.aj)"/> + <message kind="weave" text="Type 'Bottom' (GenericAspectZ.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectZ.aj:'Top ParentChildRelationship$ChildHasParent.parent')"/> + <message kind="weave" text="Type 'Bottom' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'Top ParentChildRelationship$ChildHasParent.getParent()')"/> + <message kind="weave" text="Type 'Bottom' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ChildHasParent.setParent(Top)')"/> + + <!--message kind="weave" text="Extending interface set for type 'Top' (GenericAspectZ.aj) to include 'ParentChildRelationship$ParentHasChildren<Bottom>' (GenericAspectZ.aj)"/> + <message kind="weave" text="Type 'Top' (GenericAspectZ.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectZ.aj:'java.util.List<C> ParentChildRelationship$ParentHasChildren.children')"/> + <message kind="weave" text="Type 'Top' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'java.util.List<C> ParentChildRelationship$ParentHasChildren.getChildren()')"/> + <message kind="weave" text="Type 'Top' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ParentHasChildren.addChild(C)')"/> + <message kind="weave" text="Type 'Top' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ParentHasChildren.removeChild(C)')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectZ.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectZ.aj:'java.util.List<C> ParentChildRelationship$ParentHasChildren.children')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'java.util.List<C> ParentChildRelationship$ParentHasChildren.getChildren()')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ParentHasChildren.addChild(C)')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ParentHasChildren' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ParentHasChildren.removeChild(C)')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ChildHasParent' (GenericAspectZ.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectZ.aj:'ParentChildRelationship$ParentHasChildren ParentChildRelationship$ChildHasParent.parent')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ChildHasParent' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'ParentChildRelationship$ParentHasChildren ParentChildRelationship$ChildHasParent.getParent()')"/> + <message kind="weave" text="Type 'ParentChildRelationship$ChildHasParent' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ChildHasParent.setParent(P)')"/> + <message kind="weave" text="Extending interface set for type 'Bottom' (GenericAspectZ.aj) to include 'ParentChildRelationship$ChildHasParent<Top>' (GenericAspectZ.aj)"/> + <message kind="weave" text="Type 'Bottom' (GenericAspectZ.aj) has intertyped field from 'ParentChildRelationship' (GenericAspectZ.aj:'ParentChildRelationship$ParentHasChildren ParentChildRelationship$ChildHasParent.parent')"/> + <message kind="weave" text="Type 'Bottom' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'ParentChildRelationship$ParentHasChildren ParentChildRelationship$ChildHasParent.getParent()')"/> + <message kind="weave" text="Type 'Bottom' (GenericAspectZ.aj) has intertyped method from 'ParentChildRelationship' (GenericAspectZ.aj:'void ParentChildRelationship$ChildHasParent.setParent(P)')"/--> + </compile> + <run class="GenericAspectZ"/> + </ajc-test> + + <ajc-test dir="java5/generics/binaryBridging" title="binary bridge methods - two"> + <compile files="TwoA.java" outjar="twoa.jar" options="-1.9"/> + <compile files="TwoB.java" outjar="twob.jar" options="-1.9"/> + <compile files="TwoX.java" inpath="twoa.jar;twob.jar" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="method itd sharing type variable with generic type"> + <compile files="Simple.aj" options="-1.9"/> + <run class="Simple"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/sharing" title="field itd sharing type variable with generic type"> + <compile files="Simple2.aj" options="-1.9"/> + <run class="Simple2"/> + </ajc-test> + + + <ajc-test dir="java5/generics/itds" title="non static generic method itd - 2"> + <compile files="NonstaticGenericCtorITD2.aj" options="-1.9"/> + <run class="NonstaticGenericCtorITD2"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="reusing type variable letters"> + <compile files="ReusingLetters.aj" options="-1.9"/> + <run class="ReusingLetters"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="multiple generic itds in one file"> + <compile files="BizarroSignatures.aj" options="-1.9"/> + <run class="BizarroSignatures"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="generic intertype field declaration, sharing type variable"> + <compile files="FieldITDOnGenericType.aj" options="-1.9"/> + <run class="FieldITDOnGenericType"> + <stderr> + <line text=">42"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="Parsing generic ITDs - 1"> + <compile files="Parse1.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="Parsing generic ITDs - 2"> + <compile files="Parse2.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="Parsing generic ITDs - 3"> + <compile files="Parse3.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="Parsing generic ITDs - 4"> + <compile files="Parse4.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="Parsing generic ITDs - 5"> + <compile files="Parse5.java" options="-1.9"> + <message kind="error" line="11" text="Incorrect number of type parameters supplied. The generic type Parse5<T,S> has 2 type parameters, not 3."/> + <message kind="error" line="13" text="Incorrect number of type parameters supplied. The generic type Parse5<T,S> has 2 type parameters, not 1."/> + <message kind="error" line="15" text="Intertype declarations can only be made on the generic type, not on a parameterized type. The name 'String' cannot be used as a type parameter, since it refers to a real type."/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/itds" title="Parsing generic ITDs - 6"> + <compile files="Parse6.java" options="-1.9"/> + </ajc-test> + + <!-- end of generic ITDs --> + + <!-- generic decps --> + + <ajc-test dir="java5/generics/decp" title="generic decp - simple"> + <compile files="Basic.aj" options="-1.9"/> + <run class="Basic"/> + </ajc-test> + + <ajc-test dir="java5/generics/decp" title="generic decp - implementing two variants #1"> + <compile files="Basic2.aj" options="-1.9"> + <message kind="error" line="11" text="Cannot declare parent I<java.lang.Integer> onto type Basic2 since it already has I<java.lang.String> in its hierarchy"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/decp" title="generic decp - implementing two variants #2"> + <compile files="Basic2b.aj" options="-1.9"> + <message kind="error" line="10" text="Cannot declare parent I<java.lang.Integer> onto type Basic2b since it already has I in its hierarchy"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/decp" title="generic decp - implementing two variants #3"> + <compile files="Basic2c.aj" options="-1.9"> + <message kind="error" line="10" text="Cannot declare parent I onto type Basic2c since it already has I<java.lang.Double> in its hierarchy"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/decp" title="generic decp - implementing two variants #4"> + <compile files="Basic2d.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/decp/binary" title="generic decp binary - implementing two variants #1"> + <weave classesFiles="Base1.java" aspectsFiles="Asp1.aj" options="-1.9,-showWeaveInfo"> + <message kind="error" line="2" text="Cannot declare parent I<java.lang.Integer> onto type Base1 since it already has I<java.lang.String> in its hierarchy"/> + </weave> + </ajc-test> + + <ajc-test dir="java5/generics/decp/binary" title="generic decp binary - implementing two variants #2"> + <weave classesFiles="Base2.java" aspectsFiles="Asp2.aj" options="-1.9,-showWeaveInfo"> + <message kind="error" line="2" text="Cannot declare parent I<java.lang.Integer> onto type Base2 since it already has I in its hierarchy"/> + </weave> + </ajc-test> + + <ajc-test dir="java5/generics/decp/binary" title="generic decp binary - implementing two variants #3"> + <weave classesFiles="Base3.java" aspectsFiles="Asp3.aj" options="-1.9,-showWeaveInfo"> + <message kind="error" line="2" text="Cannot declare parent I onto type Base3 since it already has I<java.lang.Double> in its hierarchy"/> + </weave> + </ajc-test> + + <ajc-test dir="java5/generics/decp/binary" title="generic decp binary - implementing two variants #4"> + <weave classesFiles="Base4.java" aspectsFiles="Asp4.aj" options="-1.9,-showWeaveInfo"/> + </ajc-test> + + <ajc-test dir="java5/generics/decp" title="generic decp - incorrect number of type parameters"> + <compile files="Basic3.aj" options="-1.9"> + <message kind="error" line="10" text="Type pattern does not match because the wrong number of type parameters are specified: Type I requires 1 parameter(s)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/decp" title="generic decp - specifying bounds"> + <compile files="Basic4.aj" options="-1.9"/> + <run class="Basic4"/> + </ajc-test> + + <ajc-test dir="java5/generics/decp" title="generic decp - specifying bounds but breaking them"> + <compile files="Basic5.aj" options="-1.9"> + <message kind="error" line="7" text="Type java.lang.String does not meet the specification for type parameter 1 (T extends java.lang.Number) in generic type I"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/decp" title="generic decp - with parameterized on the target"> + <compile files="Basic6.aj" options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Extending interface set for type 'Basic6' (Basic6.aj) to include 'K<java.lang.Integer>' (Basic6.aj)"/> + </compile> + <run class="Basic6"/> + </ajc-test> + + <!-- end of generic decps --> + + <!-- generics/itds and binary weaving --> + + <ajc-test dir="java5/generics/itds/binaryweaving" vm="1.5" title="binary weaving ITDs - A"> + <compile files="TestA_generictype.java" outjar="code.jar" options="-1.9"/> + <compile files="TestA_aspect.aj,TestA_class.java" inpath="code.jar" options="-1.9"/> + <run class="TestA_class"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/binaryweaving" vm="1.5" title="binary weaving ITDs - B"> + <compile files="TestB_generictype.java" outjar="code.jar" options="-1.9"/> + <compile files="TestB_aspect1.aj,TestB_aspect2.aj,TestB_class.java" inpath="code.jar" options="-1.9"/> + <run class="TestB_class"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/binaryweaving" vm="1.5" title="binary weaving ITDs - 1"> + <compile files="BaseClass.java" outjar="code.jar" options="-1.9"/> + <compile files="A1.aj" inpath="code.jar" options="-1.9"/> + <run class="BaseClass"> + <stderr> + <line text="Advice count=1"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds/binaryweaving" vm="1.5" title="binary weaving ITDs - 2"> + <compile files="BaseClass.java,A1.aj" outjar="code.jar" options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'BaseClass' (BaseClass.java) has intertyped field from 'A1' (A1.aj:'java.util.List<java.lang.String> BaseClass.list1')"/> + <message kind="weave" text="Type 'BaseClass' (BaseClass.java:12) advised by after advice from 'A1' (A1.aj:7)"/> + </compile> + <compile files="A2.aj" inpath="code.jar" options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'BaseClass' (BaseClass.java) has intertyped field from 'A1' (A1.aj:'java.util.List<java.lang.String> BaseClass.list1')"/> + <message kind="weave" text="Type 'BaseClass' (BaseClass.java:12) advised by after advice from 'A1' (code.jar!A1.class:7(from A1.aj))"/> + <message kind="weave" text="Type 'BaseClass' (BaseClass.java) has intertyped field from 'A2' (A2.aj:'java.util.List<N> BaseClass.list2')"/> + <message kind="weave" text="Type 'BaseClass' (BaseClass.java:13) advised by after advice from 'A2' (A2.aj:8)"/> + </compile> + <run class="BaseClass"> + <stderr> + <line text="Advice count=2"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds/binaryweaving" vm="1.5" title="binary weaving ITDs - 3"> + <compile files="BaseClass.java,A1.aj,A2.aj" outjar="code.jar" options="-1.9"/> + <compile files="A3.aj" inpath="code.jar" options="-1.9"/> + <run class="BaseClass"> + <stderr> + <line text="Advice count=3"/> + </stderr> + </run> + </ajc-test> + + <!-- end of generics/itds and binary weaving --> + + <!-- generics/itds and bridge methods --> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 1"> + <compile files="Sub1.java,Super1.java,X1.aj" options="-1.9"/> + <run class="X1"/> + </ajc-test> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 1 - binary"> + <compile files="Sub1.java,Super1.java" outjar="code.jar" options="-1.9"/> + <compile files="X1.aj" inpath="code.jar" options ="-1.9"/> + <run class="X1"/> + </ajc-test> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 2"> + <compile files="Sub2.java,Super2.java,X2.aj" options="-1.9"/> + <run class="X2"/> + </ajc-test> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 2 - binary"> + <compile files="Sub2.java,Super2.java" outjar="code.jar" options="-1.9"/> + <compile files="X2.aj,Util.java" inpath="code.jar" options ="-1.9"/> + <run class="X2"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 3"> + <compile files="Sub3.java,Super3.java,X3.aj" options="-1.9"/> + <run class="X3"/> + </ajc-test> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 3 - binary"> + <compile files="Sub3.java,Super3.java" outjar="code.jar" options="-1.9"/> + <compile files="X3.aj" inpath="code.jar" options ="-1.9"/> + <run class="X3"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 4"> + <compile files="Sub4.java,Super4.java,X4.aj" options="-1.9"/> + <run class="X4"/> + </ajc-test> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 4 - binary"> + <compile files="Sub4.java,Super4.java" outjar="code.jar" options="-1.9"/> + <compile files="X4.aj" inpath="code.jar" options ="-1.9"/> + <run class="X4"/> + </ajc-test> + + <ajc-test dir="java5/generics/binaryBridging" title="binary bridge methods - one"> + <compile files="OneA.java" outjar="onea.jar" options="-1.9"/> + <compile files="OneB.java" outjar="oneb.jar" options="-1.9"/> + <compile files="OneX.java" inpath="onea.jar;oneb.jar" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/binaryBridging" title="binary bridge methods - two"> + <compile files="TwoA.java" outjar="twoa.jar" options="-1.9"/> + <compile files="TwoB.java" outjar="twob.jar" options="-1.9"/> + <compile files="TwoX.java" inpath="twoa.jar;twob.jar" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/binaryBridging" title="binary bridge methods - three"> + <compile files="ThreeA.java" outjar="threea.jar" options="-1.9"/> + <compile files="ThreeB.java" outjar="threeb.jar" options="-1.9"/> + <compile files="ThreeX.java" inpath="threea.jar;threeb.jar" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="abstract intertype methods and covariant returns"> + <compile files="pr91381.aj" options="-1.9"/> + <run class="pr91381"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/bridgeMethods" title="abstract intertype methods and covariant returns - error"> + <compile files="pr91381_2.aj"> + <message kind="error" line="15" text="The return type is incompatible with A.foo()"/> + </compile> + </ajc-test> + + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridging with covariance 1 - normal"> + <compile files="Bridging1.aj,Util.java" options="-1.9"/> + <run class="Bridging1"> + <stderr> + <line text="Number of methods defined for D is 2"/> + <line text="C D.method1() [BridgeMethod]"/> + <line text="D D.method1()"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridging with covariance 1 - itd"> + <compile files="BridgingITD1.aj,Util.java" options="-1.9"/> + <run class="BridgingITD1"> + <stderr> + <line text="Number of methods defined for D is 2"/> + <line text="C D.method1() [BridgeMethod]"/> + <line text="D D.method1()"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="basic bridging with type vars - 1 - normal"> + <compile files="Bridging2.aj,Util.java" options="-1.9"/> + <run class="Bridging2"> + <stderr> + <line text="Number of methods defined for D is 2"/> + <line text="java.lang.Object D.next() [BridgeMethod]"/> + <line text="java.lang.String D.next()"/> + </stderr> + </run> + </ajc-test> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="basic bridging with type vars - 1 - itd"> + <compile files="BridgingITD2.aj,Util.java" options="-1.9"/> + <run class="BridgingITD2"> + <stderr> + <line text="Number of methods defined for D is 2"/> + <line text="java.lang.Object D.next() [BridgeMethod]"/> + <line text="java.lang.String D.next()"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="basic bridging with type vars - 2 - normal"> + <compile files="Bridging3.aj,Util.java" options="-1.9"/> + <run class="Bridging3"> + <stderr> + <line text="Number of methods defined for D is 2"/> + <line text="java.lang.Object D.id(java.lang.Object) [BridgeMethod]"/> + <line text="java.lang.String D.id(java.lang.String)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="basic bridging with type vars - 2 - itd"> + <compile files="BridgingITD3.aj,Util.java" options="-1.9"/> + <run class="BridgingITD3"> + <stderr> + <line text="Number of methods defined for D is 2"/> + <line text="java.lang.Object D.id(java.lang.Object) [BridgeMethod]"/> + <line text="java.lang.String D.id(java.lang.String)"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="Abstract intertype method and covariant returns" pr="91381"> + <compile files="pr91381.aj" options="-1.9,-showWeaveInfo"> + <message kind="weave" text="Type 'A' (pr91381.aj) has intertyped method from 'pr91381' (pr91381.aj:'java.lang.Object A.foo()')"/> + </compile> + <run class="pr91381"/> + </ajc-test> + <!-- end of generics/itds and bridge methods --> + + + <!-- generics and pointcuts --> + + <ajc-test dir="java5/generics/pointcuts" title="handler pcd and generics / type vars"> + <compile files="GenericInterface.java,HandlerPointcutTests.aj" options="-1.9"> + <message kind="error" line="4" text="Syntax error on token"/> + <message kind="error" line="8" text="a parameterized type pattern may not be used in a handler pointcut expression"/> + <message kind="warning" line="8" text="no match for this type name: T"/> + <message kind="error" line="11" text="a parameterized type pattern may not be used in a handler pointcut expression"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="pointcuts that dont allow type vars"> + <compile files="PointcutsThatDontAllowTypeVars.aj" options="-1.9"> + <message kind="error" line="3" text="Syntax error on token"/> + <message kind="error" line="5" text="Syntax error on token"/> + <message kind="error" line="7" text="Syntax error on token"/> + <message kind="error" line="9" text="Syntax error on token"/> + <message kind="error" line="11" text="Syntax error on token"/> + <message kind="error" line="13" text="Syntax error on token"/> + <message kind="error" line="15" text="Syntax error on token"/> + <message kind="error" line="17" text="Syntax error on token"/> + <message kind="error" line="19" text="Syntax error on token"/> + <message kind="error" line="21" text="Syntax error on token"/> + <message kind="error" line="23" text="Syntax error on token"/> + <message kind="error" line="25" text="Syntax error on token"/> + <message kind="error" line="27" text="Syntax error on token"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="annotation pcds with parameterized types"> + <compile files="ParameterizedTypesInAtPCDs.aj" options="-1.9"> + <message kind="error" line="3" text="Syntax error on token"/> + <message kind="error" line="5" text="Syntax error on token"/> + <message kind="error" line="7" text="Syntax error on token"/> + <message kind="error" line="9" text="Syntax error on token"/> + <message kind="error" line="11" text="Syntax error on token"/> + <message kind="error" line="13" text="Syntax error on token"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="annotation patterns with parameterized types"> + <compile files="ParameterizedTypesInAnnotationPatterns.aj" options="-1.9"> + <message kind="error" line="5" text="is not an annotation type"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="staticinitialization and parameterized types"> + <compile files="GenericInterface.java,GenericImplementingClass.java,StaticInitializationWithParameterizedTypes.aj" options="-1.9"> + <message kind="error" line="4" text="no static initialization join points for parameterized types, use raw type instead"/> + <message kind="error" line="6" text="no static initialization join points for parameterized types, use raw type instead"/> + <message kind="error" line="9" text="no static initialization join points for parameterized types, use raw type instead"/> + <message kind="error" line="11" text="no static initialization join points for parameterized types, use raw type instead"/> + <message kind="error" line="14" text="no static initialization join points for parameterized types, use raw type instead"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="staticinitialization and parameterized type matching"> + <compile files="GenericInterface.java,GenericImplementingClass.java,ConcreteImplementingClass.java,ConcreteExtendingClass.java,StaticInitializationWithParameterizedTypesMatching.aj" options="-1.9"> + <message kind="warning" line="1" text="clinit(GenericInterface<Double>+)"/> + <message kind="warning" line="3" text="clinit(GenericInterface<Double>+)"/> + <message kind="warning" line="3" text="clinit(GenericImplementingClass<Double>+)"/> + <message kind="warning" line="15" text="Type java.lang.String does not meet the specification for type parameter 1 (N extends java.lang.Number) in generic type GenericInterface"/> + <message kind="warning" line="19" text="Type pattern does not match because the wrong number of type parameters are specified: Type GenericInterface requires 1 parameter(s)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="staticinitialization with generic types"> + <compile files="GenericInterface.java,GenericImplementingClass.java,StaticInitializationWithGenericTypes.aj" options="-1.9"> + <message kind="warning" line="1" text="one generic param, correct bounds"/> + <message kind="warning" line="1" text="doesn't matter what type variable name you use"/> + <message kind="warning" line="1" text="works with classes too"/> + <message kind="warning" line="4" text="Type T does not meet the specification for type parameter 1 (N extends java.lang.Number) in generic type GenericInterface"/> + <message kind="warning" line="20" text="Type pattern does not match because the wrong number of type parameters are specified: Type GenericImplementingClass requires 1 parameter(s)"/> + <message kind="warning" line="24" text="Type N extends java.lang.Number & java.lang.Comparable does not meet the specification for type parameter 1 (N extends java.lang.Number) in generic type GenericImplementingClass"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="staticinitialization with generic types - advanced"> + <compile files="StaticInitializationWithGenericTypesAdvanced.aj" options="-1.9"> + <message kind="warning" line="76" text="simple match"/> + <message kind="warning" line="76" text="matches since R and R extends Object are equivalent"/> + <message kind="warning" line="63" text="raw type should match"/> + <message kind="warning" line="63" text="matches all bounds"/> + <message kind="warning" line="63" text="still matches with interfaces specified in a different order"/> + <message kind="warning" line="69" text="matches with type variable inter-dependencies"/> + <message kind="warning" line="76" text="matches any generic type with one unbound type var"/> + <message kind="warning" line="82" text="any generic type with one type var bound to Number or subtype"/> + <message kind="warning" line="63" text="matches a generic type with any upper bound and i/f bounds"/> + <message kind="warning" line="76" text="matches a generic type with any upper bound and i/f bounds"/> + <message kind="warning" line="82" text="matches a generic type with any upper bound and i/f bounds"/> + <message kind="warning" line="19" text="Type X does not meet the specification for type parameter 1 (T extends java.lang.Number & java.lang.Comparable & java.io.Serializable) in generic type ClassWithInterfaceBounds"/> + <message kind="warning" line="23" text="Type Y extends java.lang.Number does not meet the specification for type parameter 1 (T extends java.lang.Number & java.lang.Comparable & java.io.Serializable) in generic type ClassWithInterfaceBounds"/> + <message kind="warning" line="27" text="Type Z extends java.lang.Number & java.lang.Comparable does not meet the specification for type parameter 1 (T extends java.lang.Number & java.lang.Comparable & java.io.Serializable) in generic type ClassWithInterfaceBounds"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="within pcd with various parameterizations and generic types - errors"> + <compile files="WithinPointcutMatching.aj" options="-1.9"> + <message kind="warning" line="4" text="no match for this type name: T"/> + <message kind="error" line="4" text="parameterized type pattern not supported by 'within', use a raw type pattern instead"/> + <message kind="error" line="5" text="parameterized type pattern not supported by 'within', use a raw type pattern instead"/> + <message kind="error" line="6" text="parameterized type pattern not supported by 'within', use a raw type pattern instead"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="within pcd with various parameterizations and generic types - warnings"> + <compile files="WithinPointcutMatchingWarnings.aj" options="-1.9"> + <message kind="warning" line="16" text="matched set correctly"/> + <message kind="warning" line="18" text="matched execution correctly"/> + <message kind="warning" line="24" text="init matched correctly"/> + <message kind="warning" line="32" text="matched parameterization ok"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="this and target with various parameterizations and generic types - errors"> + <compile files="ThisAndTargetPointcutMatching.aj" options="-1.9"> + <message kind="warning" line="4" text="no match for this type name: T"/> + <message kind="warning" line="5" text="no match for this type name: T"/> + <message kind="error" line="4" text="parameterized types not supported for this and target pointcuts (erasure limitation)"/> + <message kind="error" line="5" text="parameterized types not supported for this and target pointcuts (erasure limitation)"/> + <message kind="error" line="6" text="parameterized types not supported for this and target pointcuts (erasure limitation)"/> + <message kind="error" line="7" text="parameterized types not supported for this and target pointcuts (erasure limitation)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="this and target with various parameterizations and generic types - runtime"> + <compile files="ThisAndTargetPointcutMatchingRuntime.aj" options="-1.9"> + </compile> + <run class="ThisAndTargetPointcutMatchingRuntime"> + <stdout> + <line text="set and this matched ok"/> + <line text="set and target matched ok"/> + <line text="call and target matched ok"/> + <line text="execution and this matched ok"/> + <line text="execution and target matched ok"/> + <line text="parameterized call and target matched ok"/> + <line text="parameterized call and this matched ok"/> + <line text="parameterized call and target matched ok"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="get and set with various parameterizations and generic types - errors"> + <compile files="GetAndSetPointcutMatching.aj" options="-1.9"> + <message kind="warning" line="4" text="no match for this type name: T"/> + <message kind="warning" line="5" text="no match for this type name: T"/> + <message kind="error" line="4" text="can't use parameterized type patterns for the declaring type of a get or set pointcut expression (use the raw type instead)"/> + <message kind="error" line="5" text="can't use parameterized type patterns for the declaring type of a get or set pointcut expression (use the raw type instead)"/> + <message kind="error" line="6" text="can't use parameterized type patterns for the declaring type of a get or set pointcut expression (use the raw type instead)"/> + <message kind="error" line="7" text="can't use parameterized type patterns for the declaring type of a get or set pointcut expression (use the raw type instead)"/> + <message kind="error" line="8" text="can't use parameterized type patterns for the declaring type of a get or set pointcut expression (use the raw type instead)"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="get and set with various parameterizations and generic declaring types"> + <compile files="GetAndSetPointcutMatchingDeclaringType.aj" options="-1.9"> + <message kind="warning" line="15" text="generic/param get matching ok"/> + <message kind="warning" line="33" text="generic/param get matching ok"/> + <message kind="warning" line="12" text="generic/param set matching ok"/> + <message kind="warning" line="32" text="generic/param set matching ok"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="get and set with various parameterizations and generic field types"> + <compile files="GetAndSetPointcutMatchingFieldType.aj" options="-1.9"> + <message kind="warning" line="13" text="raw field type matching in get ok"/> + <message kind="warning" line="14" text="raw field type matching in set ok"/> + <message kind="warning" line="49" text="erasure matching in get ok"/> + <message kind="warning" line="45" text="erasure matching in set ok"/> + <message kind="warning" line="53" text="erasure matching in get with params ok"/> + <message kind="warning" line="46" text="erasure matching in set with params ok"/> + <message kind="warning" line="72" text="parameterized type matching in set ok"/> + <message kind="warning" line="73" text="parameterized type matching in get ok"/> + <message kind="warning" line="74" text="parameterized type matching in set ok x2"/> + <message kind="warning" line="75" text="parameterized type matching in get ok x2"/> + <message kind="warning" line="83" text="wildcard set matching ok"/> + <message kind="warning" line="84" text="wildcard get matching ok"/> + <message kind="warning" line="85" text="wildcard extends set matching ok"/> + <message kind="warning" line="86" text="wildcard extends get matching ok"/> + <message kind="warning" line="87" text="wildcard super set matching ok"/> + <message kind="warning" line="88" text="wildcard super get matching ok"/> + <message kind="warning" line="73" text="the really wild show"/> + <message kind="warning" line="84" text="the really wild show"/> + <message kind="warning" line="86" text="the really wild show"/> + <message kind="warning" line="88" text="the really wild show"/> + <message kind="warning" line="53" text="the really wild show"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="init and preinit with parameterized declaring types"> + <compile files="InitializationPointcutMatching.aj" options="-1.9"> + <message kind="warning" line="4" text="no match for this type name: T"/> + <message kind="warning" line="5" text="no match for this type name: T"/> + <message kind="error" line="4" text="no [pre]initialization join points for parameterized types, use raw type instead"/> + <message kind="error" line="5" text="no [pre]initialization join points for parameterized types, use raw type instead"/> + <message kind="error" line="6" text="no [pre]initialization join points for parameterized types, use raw type instead"/> + <message kind="error" line="7" text="no [pre]initialization join points for parameterized types, use raw type instead"/> + <message kind="error" line="8" text="no [pre]initialization join points for parameterized types, use raw type instead"/> + <message kind="error" line="9" text="invalid throws pattern: a generic class may not be a direct or indirect subclass of Throwable"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="init and preinit with raw declaring type pattern"> + <compile files="InitializationPointcutMatchingDeclaringType.aj" options="-1.9"> + <message kind="warning" line="10" text="generic/param init matching ok"/> + <message kind="warning" line="10" text="generic/param preinit matching ok"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="init and preinit with parameterized parameter types"> + <compile files="InitializationPointcutMatchingParamTypes.aj" options="-1.9"> + <message kind="warning" line="36" text="raw param type matching in init ok"/> + <message kind="warning" line="36" text="raw param type matching in preinit ok"/> + <message kind="warning" line="37" text="erasure matching in init ok"/> + <message kind="warning" line="37" text="erasure matching in preinit ok"/> + <message kind="warning" line="38" text="erasure matching in init with params ok"/> + <message kind="warning" line="38" text="erasure matching in preinit with params ok"/> + <message kind="warning" line="48" text="parameterized type matching in init ok"/> + <message kind="warning" line="48" text="parameterized type matching in preinit ok"/> + <message kind="warning" line="49" text="parameterized type matching in init ok x2"/> + <message kind="warning" line="49" text="parameterized type matching in preinit ok x2"/> + <message kind="warning" line="50" text="wildcard init matching ok"/> + <message kind="warning" line="50" text="wildcard preinit matching ok"/> + <message kind="warning" line="51" text="wildcard extends init matching ok"/> + <message kind="warning" line="51" text="wildcard extends preinit matching ok"/> + <message kind="warning" line="52" text="wildcard super init matching ok"/> + <message kind="warning" line="52" text="wildcard super preinit matching ok"/> + <message kind="warning" line="48" text="the really wild show"/> + <message kind="warning" line="50" text="the really wild show"/> + <message kind="warning" line="51" text="the really wild show"/> + <message kind="warning" line="52" text="the really wild show"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="withincode with various parameterizations and generic types - errors"> + <compile files="WithincodePointcutMatching.aj" options="-1.9"> + <message kind="warning" line="4" text="no match for this type name: T"/> + <message kind="error" line="4" text="can't use parameterized type patterns for the declaring type of a withincode pointcut expression (use the raw type instead)"/> + <message kind="error" line="5" text="can't use parameterized type patterns for the declaring type of a withincode pointcut expression (use the raw type instead)"/> + <message kind="error" line="6" text="invalid throws pattern: a generic class may not be a direct or indirect subclass of Throwable"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="withincode with various parameterizations and generic types - matching"> + <compile files="WithinCodePointcutMatchingParamAndReturnTypes.aj" options="-1.9"> + <message kind="warning" line="35" text="raw param type matching in withincode ok"/> + <message kind="warning" line="36" text="raw param type matching in withincode ok"/> + <message kind="warning" line="67" text="raw return type matching in withincode ok"/> + <message kind="warning" line="38" text="erasure type matching in withincode ok"/> + <message kind="warning" line="39" text="erasure type matching in withincode ok"/> + <message kind="warning" line="42" text="erasure type matching in withincode ok"/> + <message kind="warning" line="62" text="withincode and parameterized method ok"/> + <message kind="warning" line="62" text="withincode and generic interface ok"/> + <message kind="warning" line="65" text="withincode and interface control test"/> + <message kind="warning" line="35" text="match on parameterized args"/> + <message kind="warning" line="36" text="match on parameterized args"/> + <message kind="warning" line="67" text="match on parameterized return type"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="withincode with overriding of inherited generic members"> + <compile files="WithinCodeOverriding.aj" options="-1.9"> + <message kind="warning" line="37" text="wildcard declaring type match on erasure"/> + <message kind="warning" line="50" text="wildcard declaring type match on erasure"/> + <message kind="warning" line="63" text="wildcard declaring type match on erasure"/> + <message kind="warning" line="37" text="base declaring type match on erasure"/> + <message kind="warning" line="50" text="base declaring type match on erasure"/> + <message kind="warning" line="63" text="base declaring type match on erasure"/> + <message kind="warning" line="50" text="sub type match on erasure"/> + <message kind="warning" line="63" text="parameterized match on erasure"/> + <message kind="warning" line="80" text="erasure match on base interface"/> + <message kind="warning" line="80" text="wildcard match on erasure"/> + <message kind="warning" line="80" text="parameterized match"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="execution pcd with raw type matching"> + <compile files="GenericInterface.java,ConcreteImplementingClass.java,GenericImplementingClass.java,RawTypeMatching.aj" options="-1.9"> + <message kind="warning" line="4" text="execution(* GenericInterface.*(..))"/> + <message kind="warning" line="5" text="execution(* GenericInterface.*(..))"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="execution pcd with raw signature matching"> + <compile files="GenericInterface.java,ConcreteImplementingClass.java,GenericImplementingClass.java,RawSignatureMatching.aj" options="-1.9"> + <message kind="warning" line="4" text="execution(* GenericInterface.asInt(Number))"/> + <message kind="warning" line="5" text="execution(* GenericInterface.asInt(Number))"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="execution with various parameterizations and generic types - errors"> + <compile files="ExecutionPointcutMatchingErrorCases.aj" options="-1.9"> + <message kind="warning" line="4" text="no match for this type name: T"/> + <message kind="error" line="4" text="can't use parameterized type patterns for the declaring type of an execution pointcut expression (use the raw type instead)"/> + <message kind="error" line="5" text="can't use parameterized type patterns for the declaring type of an execution pointcut expression (use the raw type instead)"/> + <message kind="error" line="6" text="invalid throws pattern: a generic class may not be a direct or indirect subclass of Throwable"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="execution with various parameterizations and generic types - matching"> + <compile files="ExecutionPointcutMatchingParamAndReturnTypes.aj" options="-1.9"> + <message kind="warning" line="35" text="raw param type matching in execution ok"/> + <message kind="warning" line="67" text="raw return type matching in execution ok"/> + <message kind="warning" line="38" text="erasure type matching in execution ok"/> + <message kind="warning" line="42" text="erasure type matching in execution ok"/> + <message kind="warning" line="61" text="execution and parameterized method ok"/> + <message kind="warning" line="61" text="execution and generic interface ok"/> + <message kind="warning" line="65" text="execution and interface control test"/> + <message kind="warning" line="35" text="match on parameterized args"/> + <message kind="warning" line="67" text="match on parameterized return type"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="execution with overriding of inherited generic members"> + <compile files="ExecutionOverriding.aj" options="-1.9"> + <message kind="warning" line="36" text="wildcard declaring type match on erasure"/> + <message kind="warning" line="49" text="wildcard declaring type match on erasure"/> + <message kind="warning" line="62" text="wildcard declaring type match on erasure"/> + <message kind="warning" line="36" text="base declaring type match on erasure"/> + <message kind="warning" line="49" text="base declaring type match on erasure"/> + <message kind="warning" line="62" text="base declaring type match on erasure"/> + <message kind="warning" line="49" text="sub type match on erasure"/> + <message kind="warning" line="62" text="parameterized match on erasure"/> + <message kind="warning" line="79" text="erasure match on base interface"/> + <message kind="warning" line="79" text="wildcard match on erasure"/> + <message kind="warning" line="79" text="parameterized match"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="execution pcd with generic declaring type and erased parameter types"> + <compile files="GenericInterface.java,ConcreteImplementingClass.java,GenericImplementingClass.java,GenericDeclaringTypeWithParameterErasure.aj" options="-1.9"> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="execution pcd with generic signature matching"> + <compile files="GenericInterface.java,ConcreteImplementingClass.java,GenericImplementingClass.java,GenericSignatureMatching.aj" options="-1.9"> + <message kind="warning" line="4" text="execution<T>(* GenericInterface<T extends Number>.asInt(T))"/> + <message kind="warning" line="5" text="execution<T>(* GenericInterface<T extends Number>.asInt(T))"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="call with various parameterizations and generic types - errors"> + <compile files="CallPointcutMatchingErrorCases.aj" options="-1.9"> + <message kind="warning" line="4" text="no match for this type name: T"/> + <message kind="error" line="4" text="can't use parameterized type patterns for the declaring type of a call pointcut expression (use the raw type instead)"/> + <message kind="error" line="5" text="can't use parameterized type patterns for the declaring type of a call pointcut expression (use the raw type instead)"/> + <message kind="error" line="6" text="invalid throws pattern: a generic class may not be a direct or indirect subclass of Throwable"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="call with various parameterizations and generic types - matching"> + <compile files="CallPointcutMatchingParamAndReturnTypes.aj" options="-1.9"> + <message kind="warning" line="7" text="raw param type matching in call ok"/> + <message kind="warning" line="8" text="raw return type matching in call ok"/> + <message kind="warning" line="9" text="erasure type matching in call ok"/> + <message kind="warning" line="10" text="erasure type matching in call ok"/> + <message kind="warning" line="11" text="call and parameterized method ok"/> + <message kind="warning" line="11" text="call and generic interface ok"/> + <message kind="warning" line="12" text="call and interface control test"/> + <message kind="warning" line="7" text="match on parameterized args"/> + <message kind="warning" line="8" text="match on parameterized return type"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="call with overriding of inherited generic members"> + <compile files="CallOverriding.aj" options="-1.9"> + <message kind="warning" line="8" text="wildcard declaring type match on erasure"/> + <message kind="warning" line="9" text="wildcard declaring type match on erasure"/> + <message kind="warning" line="10" text="wildcard declaring type match on erasure"/> + <message kind="warning" line="8" text="base declaring type match on erasure"/> + <message kind="warning" line="9" text="base declaring type match on erasure"/> + <message kind="warning" line="10" text="base declaring type match on erasure"/> + <message kind="warning" line="9" text="sub type match on erasure"/> + <message kind="warning" line="10" text="parameterized match on erasure"/> + <message kind="warning" line="87" text="erasure match on base interface"/> + <message kind="warning" line="87" text="wildcard match on erasure"/> + <message kind="warning" line="87" text="parameterized match"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="call with bridge methods"> + <compile files="CallWithBridgeMethods.aj" options="-1.9"> + <!-- see testcode + <message kind="warning" line="23" text="should match call to bridge method on L23, this is a real call!"/> + --> + </compile> + </ajc-test> + + + <ajc-test dir="java5/generics/pointcuts" title="args with raw type and generic / parameterized sigs"> + <compile files="RawArgs.aj" options="-1.9"> + </compile> + <run class="RawArgs"> + <stdout> + <line text="args(List) match at call(void Generic.foo(List))"/> + <line text="args(List) match at call(void Generic.bar(List))"/> + <line text="args(List) match at call(void Generic.tada(List))"/> + <line text="args(List) match at call(void Generic.tada(List))"/> + <line text="args(List) match at call(void Generic.tada(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="args with parameterized type and generic / parameterized sigs"> + <compile files="ArgsParameterized.aj" options="-1.9"> + <message kind="warning" line="28" text="unchecked match of List<String> with List"/> + </compile> + <run class="ArgsParameterized"> + <stdout> + <line text="args(List<String> matched at call(void Generic.foo(List))"/> + <line text="args(List<String> matched at call(void Generic.bar(List))"/> + <line text="args(List<String> matched at call(void Generic.tada(List))"/> + <line text="args(List<String> matched at call(void Generic.something(List))"/> + <line text="args(List<String> matched at call(void MustBeString.listit(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="args with parameterized type and wildcards"> + <compile files="ArgsParameterizedWithWildcards.aj" options="-1.9"> + <message kind="warning" line="10" text="unchecked match of List<Double> with List when argument is an instance of List"/> + <message kind="warning" line="10" text="unchecked match of List<Double> with List<? extends Double> when argument is an instance of List"/> + <message kind="warning" line="10" text="unchecked match of List<Double> with List<? extends Number> when argument is an instance of List"/> + <message kind="warning" line="10" text="unchecked match of List<Double> with List<?> when argument is an instance of List"/> + </compile> + <run class="ArgsParameterizedWithWildcards"> + <stdout> + <line text="List<Double> matched at execution(void C.rawList(List))"/> + <line text="List<Double> matched at execution(void C.listOfSomething(List))"/> + <line text="List<Double> matched at execution(void C.listOfSomeNumber(List))"/> + <line text="List<Double> matched at execution(void C.listOfDouble(List))"/> + <line text="List<Double> matched at execution(void C.listOfSomeDouble(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="args with generic wildcard"> + <compile files="ArgsListOfSomething.aj" options="-1.9 -Xlint:ignore"> + </compile> + <run class="ArgsListOfSomething"> + <stdout> + <line text="List<?> matches execution(void ArgsListOfSomething.rawList(List))"/> + <line text="List<?> matches execution(void ArgsListOfSomething.listOfString(List))"/> + <line text="List<?> matches execution(void ArgsListOfSomething.listOfSomething(List))"/> + <line text="List<?> matches execution(void ArgsListOfSomething.listOfSomethingExtends(List))"/> + <line text="List<?> matches execution(void ArgsListOfSomething.listOfSomethingSuper(List))"/> + <line text="wild map matches execution(void ArgsListOfSomething.mapit(Map))"/> + <line text="exact wild map matches execution(void ArgsListOfSomething.mapit(Map))"/> + <line text="super type exact matches execution(void ArgsListOfSomething.setOf(HashSet))"/> + <line text="super wild type matches execution(void ArgsListOfSomething.setOf(HashSet))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="args with generic wildcard extends"> + <compile files="ArgsListOfSomethingExtends.aj" options="-1.9"> + <message kind="warning" line="27" text="unchecked match of List<? extends Number> with List"/> + <message kind="warning" line="27" text="unchecked match of List<? extends Number> with List<?>"/> + </compile> + <run class="ArgsListOfSomethingExtends"> + <stdout> + <line text="List<? extends Number> matches execution(void ArgsListOfSomethingExtends.rawList(List))"/> + <line text="List<? extends Number> matches execution(void ArgsListOfSomethingExtends.listOfNumber(List))"/> + <line text="List<? extends Number> matches execution(void ArgsListOfSomethingExtends.listOfDouble(List))"/> + <line text="List<? extends Number> matches execution(void ArgsListOfSomethingExtends.listOfSomething(List))"/> + <line text="List<? extends Number> matches execution(void ArgsListOfSomethingExtends.listOfSomethingExtends(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="args with generic wildcard super"> + <compile files="ArgsListOfSomethingSuper.aj" options="-1.9"> + <message kind="warning" line="32" text="unchecked match of List<? super Number> with List"/> + <message kind="warning" line="32" text="unchecked match of List<? super Number> with List<?>"/> + <message kind="warning" line="32" text="unchecked match of List<? super Number> with List<? extends Number>"/> + </compile> + <run class="ArgsListOfSomethingSuper"> + <stdout> + <line text="List<? super Number> matches execution(void ArgsListOfSomethingSuper.rawList(List))"/> + <line text="List<? super Number> matches execution(void ArgsListOfSomethingSuper.listOfObject(List))"/> + <line text="List<? super Number> matches execution(void ArgsListOfSomethingSuper.listOfNumber(List))"/> + <line text="List<? super Number> matches execution(void ArgsListOfSomethingSuper.listOfSomething(List))"/> + <line text="List<? super Number> matches execution(void ArgsListOfSomethingSuper.listOfSomethingSuper(List))"/> + <line text="List<? super Number> matches execution(void ArgsListOfSomethingSuper.listOfSomethingExtendsNumber(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="generic method matching"> + <compile files="GenericMethods.aj" options="-1.9"> + <message kind="warning" line="19" text="static generic method match"/> + <message kind="warning" line="34" text="static generic method match"/> + <message kind="warning" line="24" text="instance generic method match"/> + <message kind="warning" line="39" text="instance generic method match"/> + </compile> + </ajc-test> + + <ajc-test dir="java5/generics/pointcuts" title="generic wildcards in signature matching"> + <compile files="GenericWildcardsInSignatureMatching.aj" options="-1.9"> + <message kind="warning" line="5" text="set of a list"/> + <message kind="warning" line="7" text="exact nested wildcard match"/> + <message kind="warning" line="7" text="wildcard nested wildcard match"/> + <message kind="warning" line="11" text="super"/> + <message kind="warning" line="15" text="super wild match"/> + </compile> + </ajc-test> + + <!-- end of generics and pointcuts tests --> + + <ajc-test dir="java5/generics/afterAdvice" title="after throwing with parameterized throw type"> + <compile files="AfterThrowing.aj" options="-1.9"> + <message kind="error" line="6" text="cannot convert from List<String> to Throwable"/> + </compile> + </ajc-test> + + + <ajc-test dir="java5/generics/afterAdvice" title="after returning with raw type and generic / parameterized sigs"> + <compile files="AfterReturningRawType.aj" options="-1.9"> + </compile> + <run class="AfterReturningRawType"> + <stdout> + <line text="returning(List) match at call(List Generic.foo(List))"/> + <line text="returning(List) match at call(List Generic.bar(List))"/> + <line text="returning(List) match at call(List Generic.tada(List))"/> + <line text="returning(List) match at call(List Generic.tada(List))"/> + <line text="returning(List) match at call(List Generic.tada(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/afterAdvice" title="after returning with parameterized type and generic / parameterized sigs"> + <compile files="AfterReturningParameterized.aj" options="-1.9"> + <message kind="warning" line="28" text="unchecked match of List<String> with List"/> + </compile> + <run class="AfterReturningParameterized"> + <stdout> + <line text="returning(List<String> matched at call(List Generic.foo(List))"/> + <line text="returning(List<String> matched at call(List Generic.bar(List))"/> + <line text="returning(List<String> matched at call(List Generic.tada(List))"/> + <line text="returning(List<String> matched at call(List Generic.something(List))"/> + <line text="returning(List<String> matched at call(List MustBeString.listit(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/afterAdvice" title="after returning with parameterized type and wildcards"> + <compile files="AfterReturningParameterizedWithWildcards.aj" options="-1.9"> + <message kind="warning" line="10" text="unchecked match of List<Double> with List when argument is an instance of List"/> + <message kind="warning" line="10" text="unchecked match of List<Double> with List<? extends Double> when argument is an instance of List"/> + <message kind="warning" line="10" text="unchecked match of List<Double> with List<? extends Number> when argument is an instance of List"/> + <message kind="warning" line="10" text="unchecked match of List<Double> with List<?> when argument is an instance of List"/> + </compile> + <run class="AfterReturningParameterizedWithWildcards"> + <stdout> + <line text="List<Double> matched at call(List C.rawList(List))"/> + <line text="List<Double> matched at call(List C.listOfSomething(List))"/> + <line text="List<Double> matched at call(List C.listOfSomeNumber(List))"/> + <line text="List<Double> matched at call(List C.listOfDouble(List))"/> + <line text="List<Double> matched at call(List C.listOfSomeDouble(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/afterAdvice" title="after returning with generic wildcard"> + <compile files="AfterReturningListOfSomething.aj" options="-1.9"> + <!-- warning is unchecked match of List<?> from line 28 onto line 15. --> + <!-- some sets may be lists unless the set is final, so as a cast is allowed, the match is allowed --> + <message kind="warning" line="28"/> + <message kind="warning" line="44"/> + <message kind="warning" line="48"/> + </compile> + <run class="AfterReturningListOfSomething"> + <stdout> + <line text="List<?> matches execution(List AfterReturningListOfSomething.rawList(List))"/> + <line text="List<?> matches execution(List AfterReturningListOfSomething.listOfString(List))"/> + <line text="List<?> matches execution(List AfterReturningListOfSomething.listOfSomething(List))"/> + <line text="List<?> matches execution(List AfterReturningListOfSomething.listOfSomethingExtends(List))"/> + <line text="List<?> matches execution(List AfterReturningListOfSomething.listOfSomethingSuper(List))"/> + <line text="wild map matches execution(Map AfterReturningListOfSomething.mapit(Map))"/> + <line text="exact wild map matches execution(Map AfterReturningListOfSomething.mapit(Map))"/> + <line text="super type exact matches execution(HashSet AfterReturningListOfSomething.setOf(HashSet))"/> + <line text="super wild type matches execution(HashSet AfterReturningListOfSomething.setOf(HashSet))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/afterAdvice" title="after returning with generic wildcard extends"> + <compile files="AfterReturningListOfSomethingExtends.aj" options="-1.9"> + <message kind="warning" line="27" text="unchecked match of List<? extends Number> with List"/> + <message kind="warning" line="27" text="unchecked match of List<? extends Number> with List<?>"/> + </compile> + <run class="AfterReturningListOfSomethingExtends"> + <stdout> + <line text="List<? extends Number> matches execution(List AfterReturningListOfSomethingExtends.rawList(List))"/> + <line text="List<? extends Number> matches execution(List AfterReturningListOfSomethingExtends.listOfNumber(List))"/> + <line text="List<? extends Number> matches execution(List AfterReturningListOfSomethingExtends.listOfDouble(List))"/> + <line text="List<? extends Number> matches execution(List AfterReturningListOfSomethingExtends.listOfSomething(List))"/> + <line text="List<? extends Number> matches execution(List AfterReturningListOfSomethingExtends.listOfSomethingExtends(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/afterAdvice" title="after returning with generic wildcard super"> + <compile files="AfterReturningListOfSomethingSuper.aj" options="-1.9"> + <message kind="warning" line="32" text="unchecked match of List<? super Number> with List"/> + <message kind="warning" line="32" text="unchecked match of List<? super Number> with List<?>"/> + <message kind="warning" line="32" text="unchecked match of List<? super Number> with List<? extends Number>"/> + </compile> + <run class="AfterReturningListOfSomethingSuper"> + <stdout> + <line text="List<? super Number> matches execution(List AfterReturningListOfSomethingSuper.rawList(List))"/> + <line text="List<? super Number> matches execution(List AfterReturningListOfSomethingSuper.listOfObject(List))"/> + <line text="List<? super Number> matches execution(List AfterReturningListOfSomethingSuper.listOfNumber(List))"/> + <line text="List<? super Number> matches execution(List AfterReturningListOfSomethingSuper.listOfSomething(List))"/> + <line text="List<? super Number> matches execution(List AfterReturningListOfSomethingSuper.listOfSomethingSuper(List))"/> + <line text="List<? super Number> matches execution(List AfterReturningListOfSomethingSuper.listOfSomethingExtendsNumber(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test title="ajdk notebook: erasure matching examples" dir="java5/generics/ajdk"> + <compile files="ErasureMatching.aj" options="-1.9"> + <message kind="warning" line="18" text="static generic method match"/> + <message kind="warning" line="21" text="instance generic method match"/> + <message kind="warning" line="31" text="method in generic type match"/> + <message kind="warning" line="28" text="field in generic type match"/> + </compile> + </ajc-test> + + <ajc-test title="ajdk notebook: simple parameterized type matching examples" dir="java5/generics/ajdk"> + <compile files="SimpleParameterizedTypeExamples.aj" options="-1.9"> + <message kind="warning" line="34" text="get myStrings 1"/> + <message kind="warning" line="34" text="get myStrings 2"/> + <message kind="warning" line="38" text="get myStrings 1"/> + <message kind="warning" line="38" text="get myStrings 2"/> + <message kind="warning" line="35" text="get myFloats 1"/> + <message kind="warning" line="35" text="get myFloats 2"/> + <message kind="warning" line="35" text="get myFloats 3"/> + <message kind="warning" line="34" text="getter 1"/> + <message kind="warning" line="35" text="getter 1"/> + <message kind="warning" line="34" text="getter 2"/> + <message kind="warning" line="35" text="getter 2"/> + <message kind="warning" line="34" text="getter 3"/> + <message kind="warning" line="35" text="getter 4"/> + <message kind="warning" line="25" text="call 1"/> + <message kind="warning" line="25" text="call 2"/> + </compile> + </ajc-test> + + <ajc-test title="ajdk notebook: mixed parameterized types and generic methods" dir="java5/generics/ajdk"> + <compile files="MixedParameterizedAndTypeVariables.aj" options="-1.9"> + <message kind="warning" line="13" text="erasure match"/> + <message kind="warning" line="13" text="mixed match"/> + <message kind="warning" line="13" text="params only match"/> + </compile> + </ajc-test> + + <ajc-test title="ajdk notebook: signature matching with generic wildcards" dir="java5/generics/ajdk"> + <compile files="SignatureWildcards.aj" options="-1.9"> + <message kind="warning" line="13" text="any list"/> + <message kind="warning" line="15" text="any list"/> + <message kind="warning" line="17" text="any list"/> + <message kind="warning" line="13" text="only foo"/> + <message kind="warning" line="15" text="some list"/> + <message kind="warning" line="13" text="any list with upper bound"/> + <message kind="warning" line="15" text="any list with upper bound"/> + </compile> + </ajc-test> + + <ajc-test title="ajdk notebook: bridge method examples" dir="java5/generics/ajdk"> + <compile files="BridgeMethodExamples.aj" options="-1.9"> + <message kind="warning" line="17" text="double match"/> + <message kind="warning" line="25" text="double match"/> + <message kind="warning" line="9" text="match"/> + <message kind="warning" line="11" text="match"/> + </compile> + </ajc-test> + + <ajc-test title="ajdk notebook: args examples" dir="java5/generics/ajdk"> + <compile files="ArgsExamples.aj" options="-1.9"> + <message kind="warning" line="15" text="unchecked match of List<Double> with List<? extends Number> when argument is an instance of List at join point method-execution(void C.goo(List<? extends Number>)) [Xlint:uncheckedArgument]"/> + <message kind="warning" line="53" text="unchecked match"/> + </compile> + <run class="ArgsExamples"> + <stdout> + <line text="args(List)"/> + <line text="args List of String"/> + <line text="args(List)"/> + <line text="args List of Double"/> + <line text="args(List)"/> + <line text="args List of Double"/> + </stdout> + </run> + </ajc-test> + + <ajc-test title="ajdk notebook: after returning examples" dir="java5/generics/ajdk"> + <compile files="AfterReturningExamples.aj" options="-1.9"> + <message kind="warning" line="20" text="unchecked match of List<Double> with List<? extends Number>"/> + </compile> + <run class="AfterReturningExamples"> + <stdout> + <line text="execution(List C.foo(List))"/> + <line text="raw s1"/> + <line text="raw s2"/> + <line text="execution(List C.bar(List))"/> + <line text="raw 5.0"/> + <line text="raw 10.0"/> + <line text="a1 5.0"/> + <line text="a1 10.0"/> + <line text="a2 5.0"/> + <line text="a2 10.0"/> + <line text="a3 5.0"/> + <line text="a3 10.0"/> + <line text="execution(List C.goo(List))"/> + <line text="raw 5.0"/> + <line text="raw 10.0"/> + <line text="a1 5.0"/> + <line text="a1 10.0"/> + <line text="a3 5.0"/> + <line text="a3 10.0"/> + </stdout> + </run> + </ajc-test> + + <ajc-test title="ajdk notebook: args and wildcards examples" dir="java5/generics/ajdk"> + <compile files="WildcardArgsExamples.aj" options="-1.9"> + <message kind="warning" line="6" text="unchecked match of List<? extends Number> with List"/> + </compile> + <run class="WildcardArgsExamples"> + <stdout> + <line text="advice match at call(void C.foo(Object))"/> + <line text="advice match at call(void C.foo(Object))"/> + <line text="advice match 2 at call(void C.goo1(List))"/> + <line text="advice match 2 at call(void C.goo2(List))"/> + <line text="advice match 2 at call(void C.goo4(List))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test title="ajdk notebook: pointcut in generic class example" dir="java5/generics/ajdk"> + <compile files="PointcutInGenericClassExample.aj" options="-1.9"> + <message kind="warning" line="23" text="parameterized with C"/> + <message kind="warning" line="29" text="parameterized with D"/> + </compile> + </ajc-test> + + <!-- ============================================================== --> + <!-- End of generics tests --> + <!-- ============================================================== --> + + <ajc-test dir="bugs150/pr98901" title="public method with declare @method"> + <compile files="Case01.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B01"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" title="Compiler error due to a wrong exception check in try blocks"> + <compile files="pr82989.aj" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr98901" title="public method on the aspect that declares @method on it"> + <compile files="Case02.aj" options="-1.9 -Xlint:error"/> + <run class="B02"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr98901" title="public annotated method"> + <compile files="Case03.aj" options="-1.9 -Xlint:error"/> + <run class="B03"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public ITD method with declare @method"> + <compile files="Case04.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B04"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public annotated ITD method"> + <compile files="Case05.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B05"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public ITD-on-itself method with declare @method"> + <compile files="Case06.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B06"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public annotated ITD-on-itself method"> + <compile files="Case07.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B07"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public method on an Interface with declare @method"> + <compile files="Case08.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B08"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public annotated method on an Interface"> + <compile files="Case09.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B09"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public ITD method onto an Interface with declare @method"> + <compile files="Case10.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B10"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public annotated ITD method onto an Interface"> + <compile files="Case11.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B11"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract method with declare @method"> + <compile files="Case12.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B12"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract method on the aspect that declares @method on it"> + <compile files="Case13.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B13"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract annotated method"> + <compile files="Case14.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B14"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract ITD method with declare @method"> + <compile files="Case15.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B15"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract annotated ITD method"> + <compile files="Case16.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B16"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract ITD-on-itself method with declare @method"> + <compile files="Case17.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B17"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract annotated ITD-on-itself method"> + <compile files="Case18.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B18"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract method on an Interface with declare @method"> + <compile files="Case19.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B19"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract annotated method on an Interface"> + <compile files="Case20.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B20"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract ITD method onto an Interface with declare @method"> + <compile files="Case21.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B21"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public abstract annotated ITD method onto an Interface"> + <compile files="Case22.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B22"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public field with declare @field"> + <compile files="Case23.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B23"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + + +<ajc-test dir="bugs150/pr98901" title="public field on the aspect that declares @field on it"> + <compile files="Case24.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B24"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + +<ajc-test dir="bugs150/pr98901" title="public annotated field"> + <compile files="Case25.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B25"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr98901" title="public ITD field with declare @field"> + <compile files="Case26.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B26"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr98901" title="public annotated ITD field"> + <compile files="Case27.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B27"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr98901" title="public ITD-on-itself field with declare @field"> + <compile files="Case28.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B28"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr98901" title="public annotated ITD-on-itself field"> + <compile files="Case29.aj" options="-1.9 -Xlint:error -Xdev:NoAtAspectJProcessing"/> + <run class="B29"> + <stdout> + <line text="@anInterface()"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" title="Unable to build shadows"> + <compile files="pr109728.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr110788" title="bad generic decp - 1"> + <compile files="Case1.java" options="-1.9"> + <message kind="error" line="10" text="Cannot declare parent B<java.lang.Number> onto type C since it already has A<java.lang.String> in its hierarchy"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr110788" title="bad generic decp - 2"> + <compile files="Case2.java" options="-1.9"> + <message kind="error" line="8" text="Cannot declare parent A<java.lang.Number> onto type C since it already has A<java.lang.String> in its hierarchy"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr110788" title="bad generic decp - 3"> + <compile files="Case3.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr110788" title="bad generic decp - 4"> + <compile files="Case4.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr110927" title="cant create signature attribute"> + <compile files="Case1.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr72834" title="broken dispatch"> + <compile files="Trouble.java"> + <message kind="error" line="7" text="package visible abstract inter-type declarations are not allowed"/> + <message kind="error" line="9" text="The method getName() is undefined for the type A"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr73856" title="missing accessor"> + <compile files="MissingAccessor.java"/> + <run class="MissingAccessor"/> + </ajc-test> + + <ajc-test dir="bugs150/pr90143" title="cant call super methods"> + <compile files="A.aj"/> + </ajc-test> + + <ajc-test dir="bugs150" title="cunning declare parents"> + <compile files="pr92311.aj"/> + </ajc-test> + + <ajc-test dir="bugs150" title="ITD varargs problem"> + <compile files="pr110906.aj" options="-1.9"/> + <run class="pr110906"> + <stdout> + <line text="a"/> + <line text="a"/> + <line text="a"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150" title="generic itds and abstract method error"> + <compile files="pr102357.aj"/> + <run class="pr102357"/> + </ajc-test> + + <ajc-test dir="bugs150" title="unexpected error unboundFormalInPC"> + <compile files="pr112027.aj"/> + </ajc-test> + + <ajc-test dir="bugs150" title="ITD varargs in constructor"> + <compile files="pr111481.aj" options="-1.9"/> + <run class="pr111481"> + <stdout> + <line text="a"/> + <line text="a"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr112602" title="ClassCastException with generic wildcard"> + <compile files="GenericInterface.java,Implementation.java" options="-1.9,-emacssym"/> + </ajc-test> + + <ajc-test dir="bugs150/pr110307" title="Cant provide default implementation via ITD - 1"> + <compile files="Case1.java" options="-1.9"> + <message kind="warning" line="27" text="no match for this type name: Branch [Xlint:invalidAbsoluteTypeName]"/> + <message kind="error" line="26" text="can't bind type name 'Branch'"/> + <message kind="error" line="27" text="can't bind type name 'Revision'"/> + <message kind="error" line="33" text="List cannot be resolved to a type"/> + <message kind="error" line="38" text="List cannot be resolved to a type"/> + <message kind="error" line="39" text="List cannot be resolved to a type"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr110307" title="Cant provide default implementation via ITD - 2"> + <compile files="Case2.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr110307" title="Cant provide default implementation via ITD - 3"> + <compile files="Case3.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr110307" title="Cant provide default implementation via ITD - 4"> + <compile files="Case4.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr110307" title="Cant provide default implementation via ITD - 5"> + <compile files="Case5.java" options="-1.9"> + <!-- might possibly need more diagnostics in this case to explain what has happened --> + <message kind="error" line="10" text="can't override java.util.List<java.lang.String> I.foo() with java.util.List<java.lang.Integer> A.foo() return types don't match"/> + <message kind="error" line="15" text="can't override java.util.List<java.lang.String> I.foo() with java.util.List<java.lang.Integer> A.foo() return types don't match"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr110307" title="Cant provide default implementation via ITD - 6"> + <compile files="Case6.java" options="-1.9"> + <message kind="error" line="8" text="N cannot be resolved to a type"/> + <!--message kind="error" line="7" text="T cannot be resolved to a type"/--> + </compile> + </ajc-test> + + <ajc-test dir="bugs150/pr110307" title="Cant provide default implementation via ITD - 7"> + <compile files="Case7.java" options="-1.9"/> + <run class="Case7"> + <stderr> + <line text="in=hello out=hello"/> + <line text="in=35 out=35"/> + <line text="in=[] out=[]"/> + </stderr> + </run> + </ajc-test> + + <!-- generic ITDs --> + + <ajc-test dir="java5/generics/itds/design" title="generic itds - design A"> + <compile files="DesignA.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/design" title="generic itds - design B"> + <compile files="DesignB.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/design" title="generic itds - design C"> + <compile files="DesignC.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/design" title="generic itds - design D"> + <compile files="DesignD.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/design" title="generic itds - design E"> + <compile files="DesignE.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/design" title="generic itds - design F"> + <compile files="DesignF.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="java5/generics/itds/design" title="generic itds - design G"> + <compile files="DesignG.java" options="-1.9"/> + </ajc-test> + + <ajc-test dir="bugs150/pr116626" title="NPE in WeavingAdaptor"> + <compile files="com/foo/bar/Test.java, TestAspect.aj" options="-1.9"/> + <run class="com.foo.bar.Test" ltw="aop.xml" + > + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr119657" title="IllegalAccessError with around advice on interface method call"> + <compile files="services/account/StockQuoteServiceTest.java, services/accountdata/StockAccount.java, services/stockquote/StockQuoteService.java, services/stockquote/StockQuoteServiceImpl.java, services/account/AccountReport.java, accounts/recovery/Recovery.aj"/> + <run class="services.account.StockQuoteServiceTest"> + <stdout> + <line text="Recovery.around() call(float services.stockquote.StockQuoteService.getQuote(String))"/> + </stdout> + </run> + <run class="services.account.StockQuoteServiceTest" ltw="aop.xml"> + <stdout> + <line text="Recovery.around() call(float services.stockquote.StockQuoteService.getQuote(String))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr119657" title="IllegalAccessError with around advice on interface method call not self"> + <compile files="services/account/StockQuoteServiceTest.java, services/accountdata/StockAccount.java, services/stockquote/StockQuoteService.java, services/stockquote/StockQuoteServiceImpl.java, services/account/AccountReport.java, accounts/recovery/RecoveryNotSelf.aj"/> + <run class="services.account.StockQuoteServiceTest"> + <stdout> + <line text="RecoveryNotSelf.around() call(float services.stockquote.StockQuoteService.getQuote(String))"/> + </stdout> + </run> + <run class="services.account.StockQuoteServiceTest" ltw="aop-notself.xml"> + <stdout> + <line text="RecoveryNotSelf.around() call(float services.stockquote.StockQuoteService.getQuote(String))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr119657" title="IllegalAccessError with around advice on interface method call using -XterminateAfterCompilation and LTW"> + <compile files="services/account/StockQuoteServiceTest.java, services/accountdata/StockAccount.java, services/stockquote/StockQuoteService.java, services/stockquote/StockQuoteServiceImpl.java, services/account/AccountReport.java"/> + <compile files="accounts/recovery/Recovery.aj" options="-XterminateAfterCompilation"/> + <run class="services.account.StockQuoteServiceTest" ltw="aop.xml"> + <stdout> + <line text="Recovery.around() call(float services.stockquote.StockQuoteService.getQuote(String))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr119657" title="IllegalAccessError with around advice on interface method call using LTW"> + <compile files="services/account/StockQuoteServiceTest.java, services/accountdata/StockAccount.java, services/stockquote/StockQuoteService.java, services/stockquote/StockQuoteServiceImpl.java, services/account/AccountReport.java"/> + <compile files="accounts/recovery/Recovery.aj"/> + <run class="services.account.StockQuoteServiceTest" ltw="aop.xml"> + <stdout> + <line text="Recovery.around() call(float services.stockquote.StockQuoteService.getQuote(String))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr119657" title="IllegalAccessError with around advice on interface method call not self using LTW"> + <compile files="services/account/StockQuoteServiceTest.java, services/accountdata/StockAccount.java, services/stockquote/StockQuoteService.java, services/stockquote/StockQuoteServiceImpl.java, services/account/AccountReport.java"/> + <compile files="accounts/recovery/RecoveryNotSelf.aj"/> + <run class="services.account.StockQuoteServiceTest" ltw="aop-notself.xml"> + <stdout> + <line text="RecoveryNotSelf.around() call(float services.stockquote.StockQuoteService.getQuote(String))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr119657" title="IllegalAccessError with around advice on interface method call self and not self using LTW"> + <compile files="services/account/StockQuoteServiceTest.java, services/accountdata/StockAccount.java, services/stockquote/StockQuoteService.java, services/stockquote/StockQuoteServiceImpl.java, services/account/AccountReport.java"/> + <compile files="accounts/recovery/Recovery.aj, accounts/recovery/RecoveryNotSelf.aj"/> + <run class="services.account.StockQuoteServiceTest" ltw="aop-selfandnotself.xml"> + <stdout> + <line text="Recovery.around() call(float services.stockquote.StockQuoteService.getQuote(String))"/> + <line text="RecoveryNotSelf.around() call(float services.stockquote.StockQuoteService.getQuote(String))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr119657" title="IllegalAccessError with around advice on interface method call using LTW and -XnoInline"> + <compile files="services/account/StockQuoteServiceTest.java, services/accountdata/StockAccount.java, services/stockquote/StockQuoteService.java, services/stockquote/StockQuoteServiceImpl.java, services/account/AccountReport.java"/> + <compile files="accounts/recovery/Recovery.aj"/> + <run class="services.account.StockQuoteServiceTest" ltw="aop-noinline.xml"> + <stdout> + <line text="Recovery.around() call(float services.stockquote.StockQuoteService.getQuote(String))"/> + </stdout> + </run> + </ajc-test> + + <ajc-test dir="bugs150/pr121385" title="override protected pointcut in aop.xml concrete aspect"> + <compile files="Hello.java"/> + <compile files="World.aj, ConcreteWorld.aj"/> + <run class="Hello" ltw="aop.xml"> + <stdout> + <line text="around start!"/> + <line text="Hello"/> + <line text="around start!"/> + <line text="World"/> + <line text="around end!"/> + <line text="around end!"/> + </stdout> + </run> + </ajc-test> + +</suite>
\ No newline at end of file |