summaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
authoraclement <aclement>2005-08-22 17:00:01 +0000
committeraclement <aclement>2005-08-22 17:00:01 +0000
commit1abe388fddf09811e19dbb1405ed8d81c0cec694 (patch)
tree370ef5cb166a1e22a2755020e104b4d6d95c3984 /tests/src
parentffec34a47eb415e55b132be4f73d73c9ae4aadd5 (diff)
downloadaspectj-1abe388fddf09811e19dbb1405ed8d81c0cec694.tar.gz
aspectj-1abe388fddf09811e19dbb1405ed8d81c0cec694.zip
genericitds: tests moved around and activated in GenericsTests
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java107
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/ajc150.xml292
2 files changed, 371 insertions, 28 deletions
diff --git a/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java b/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
index 43200dfb2..5adfad3f6 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
+++ b/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
@@ -152,22 +152,26 @@ public class GenericsTests extends XMLBasedAjcTestCase {
* PASS multiple type variables in an ITD
* PASS parsing ITDs that share type variables with target type
* PASS using type variables from the target type in your field ITD
- * TODO using type variables from the target type in your method ITD (but no type vars of your own)
- * TODO using type variables from the target type in your ctor ITD (but no type vars of your own)
- * TODO using type variables from the target type in your *STATIC* ITD (field/method/ctor)
- * TODO binary weaving with changing types (moving between generic and simple)
- * TODO bridge method creation
- * TODO reusing type variable letter but differing spec across multiple ITDs in one aspect
+ * PASS using type variables from the target type in your method ITD (but no type vars of your own)
+ * PASS using type variables from the target type in your ctor ITD (but no type vars of your own)
+ * PASS using type variables from the target type and having your own too (methods)
+ * PASS using type variables from the target type and having your own too (ctors)
+ * PASS reusing type variable letter but differing spec across multiple ITDs in one aspect
* PASS wildcards
- * TODO exotic class/interface bounds ('? extends List<String>')
* PASS recursive type variable definitions
- * TODO generic aspects
- * TODO parameterizing ITDs with type variables
- *
- * defer?
- * TODO using type variables from the target type and having your own too (methods)
- * TODO using type variables from the target type and having your own too (ctors)
+ * PASS generic aspects
+ * PASS parameterizing ITDs with type variables
+ * TODO using type variables from the target type in your *STATIC* ITD (field/method/ctor) (error scenario)
+ * TODO binary weaving with changing types (moving between generic and simple)
+ * TODO bridge method creation (also relates to covariance overrides..)
+ * TODO exotic class/interface bounds ('? extends List<String>','? super anything')
* TODO signature attributes for generic ITDs (public only?)
+ * TODO generic aspect binary weaving (or at least multi source file weaving)
+ *
+ *
+ * strangeness:
+ *
+ * adding declare precedence into the itds/binaryweaving A2.aj, A3.aj causes a bizarre classfile inconsistent message
*/
public static Test suite() {
@@ -236,8 +240,8 @@ public class GenericsTests extends XMLBasedAjcTestCase {
public void testParseItdStaticMethod() {runTest("Parsing generic ITDs - 2");}
public void testParseItdCtor() {runTest("Parsing generic ITDs - 3");}
public void testParseItdComplexMethod() {runTest("Parsing generic ITDs - 4");}
-// public void testParseItdSharingVars1() {runTest("Parsing generic ITDs - 5");}
-// public void testParseItdSharingVars2() {runTest("Parsing generic ITDs - 6");}
+ public void testParseItdSharingVars1() {runTest("Parsing generic ITDs - 5");}
+ public void testParseItdSharingVars2() {runTest("Parsing generic ITDs - 6");}
// non static
@@ -304,6 +308,74 @@ public class GenericsTests extends XMLBasedAjcTestCase {
public void testFieldITDsUsingTargetTypeVars15(){runTest("field itd using type variable from target type -15");}
public void testFieldITDsUsingTargetTypeVars16(){runTest("field itd using type variable from target type -16");}
+
+ public void testMethodITDsUsingTargetTypeVarsA1() {runTest("method itd using type variable from target type - A1");}
+ public void testMethodITDsUsingTargetTypeVarsA2() {runTest("method itd using type variable from target type - A2");}
+ public void testMethodITDsUsingTargetTypeVarsA3() {runTest("method itd using type variable from target type - A3");}
+ public void testMethodITDsUsingTargetTypeVarsA4() {runTest("method itd using type variable from target type - A4");}
+ public void testMethodITDsUsingTargetTypeVarsB1() {runTest("method itd using type variable from target type - B1");}
+ public void testMethodITDsUsingTargetTypeVarsC1() {runTest("method itd using type variable from target type - C1");}
+ public void testMethodITDsUsingTargetTypeVarsD1() {runTest("method itd using type variable from target type - D1");}
+ public void testMethodITDsUsingTargetTypeVarsE1() {runTest("method itd using type variable from target type - E1");}
+ public void testMethodITDsUsingTargetTypeVarsF1() {runTest("method itd using type variable from target type - F1");}
+ public void testMethodITDsUsingTargetTypeVarsG1() {runTest("method itd using type variable from target type - G1");}
+ public void testMethodITDsUsingTargetTypeVarsH1() {runTest("method itd using type variable from target type - H1");}
+ public void testMethodITDsUsingTargetTypeVarsI1() {runTest("method itd using type variable from target type - I1");}
+ public void testMethodITDsUsingTargetTypeVarsI2() {runTest("method itd using type variable from target type - I2");}
+ public void testMethodITDsUsingTargetTypeVarsJ1() {runTest("method itd using type variable from target type - J1");}
+ public void testMethodITDsUsingTargetTypeVarsK1() {runTest("method itd using type variable from target type - K1");}
+ public void testMethodITDsUsingTargetTypeVarsL1() {runTest("method itd using type variable from target type - L1");}
+ public void testMethodITDsUsingTargetTypeVarsM1() {runTest("method itd using type variable from target type - M1");}
+ public void testMethodITDsUsingTargetTypeVarsM2() {runTest("method itd using type variable from target type - M2");}
+ public void testMethodITDsUsingTargetTypeVarsN1() {runTest("method itd using type variable from target type - N1");}
+ public void testMethodITDsUsingTargetTypeVarsO1() {runTest("method itd using type variable from target type - O1");}
+ public void testMethodITDsUsingTargetTypeVarsO2() {runTest("method itd using type variable from target type - O2");}
+ public void testMethodITDsUsingTargetTypeVarsP1() {runTest("method itd using type variable from target type - P1");}
+ public void testMethodITDsUsingTargetTypeVarsQ1() {runTest("method itd using type variable from target type - Q1");}
+
+ public void testCtorITDsUsingTargetTypeVarsA1() {runTest("ctor itd using type variable from target type - A1");}
+ public void testCtorITDsUsingTargetTypeVarsB1() {runTest("ctor itd using type variable from target type - B1");}
+ public void testCtorITDsUsingTargetTypeVarsC1() {runTest("ctor itd using type variable from target type - C1");}
+ public void testCtorITDsUsingTargetTypeVarsD1() {runTest("ctor itd using type variable from target type - D1");}
+ public void testCtorITDsUsingTargetTypeVarsE1() {runTest("ctor itd using type variable from target type - E1");}
+ public void testCtorITDsUsingTargetTypeVarsF1() {runTest("ctor itd using type variable from target type - F1");}
+ public void testCtorITDsUsingTargetTypeVarsG1() {runTest("ctor itd using type variable from target type - G1");}
+ public void testCtorITDsUsingTargetTypeVarsH1() {runTest("ctor itd using type variable from target type - H1");}
+ public void testCtorITDsUsingTargetTypeVarsI1() {runTest("ctor itd using type variable from target type - I1");}
+
+ public void testSophisticatedAspectsA() {runTest("uberaspects - A");}
+ public void testSophisticatedAspectsB() {runTest("uberaspects - B");}
+ public void testSophisticatedAspectsC() {runTest("uberaspects - C");}
+ public void testSophisticatedAspectsD() {runTest("uberaspects - D");}
+ public void testSophisticatedAspectsE() {runTest("uberaspects - E");}
+ public void testSophisticatedAspectsF() {runTest("uberaspects - F");}
+ public void testSophisticatedAspectsG() {runTest("uberaspects - G");}
+ public void testSophisticatedAspectsH() {runTest("uberaspects - H");}
+ public void testSophisticatedAspectsI() {runTest("uberaspects - I");}
+ public void testSophisticatedAspectsJ() {runTest("uberaspects - J");}
+// public void testSophisticatedAspectsK() {runTest("uberaspects - K");} // FIXME asc needs some error messages writing
+ public void testSophisticatedAspectsL() {runTest("uberaspects - L");}
+// public void testSophisticatedAspectsM() {runTest("uberaspects - M");} // FIXME asc needs some error messages writing
+ public void testSophisticatedAspectsN() {runTest("uberaspects - N");}
+// public void testSophisticatedAspectsO() {runTest("uberaspects - O");} // FIXME asc needs some error messages writing
+ public void testSophisticatedAspectsP() {runTest("uberaspects - P");}
+ public void testSophisticatedAspectsQ() {runTest("uberaspects - Q");}
+ public void testSophisticatedAspectsR() {runTest("uberaspects - R");}
+ public void testSophisticatedAspectsS() {runTest("uberaspects - S");}
+ public void testSophisticatedAspectsT() {runTest("uberaspects - T");}
+
+ //public void testSophisticatedAspectsU() {runTest("uberaspects - U");}
+
+ public void testBinaryWeavingITDsA() {runTest("binary weaving ITDs - A");}
+
+ // ?? Looks like reweavable files dont process their type mungers correctly.
+ // See AjLookupEnvironment.weaveInterTypeDeclarations(SourceTypeBinding,typeMungers,declareparents,...)
+ // it seems to process any it discovers from the weaver state info then not apply new ones (the ones
+ // passed in!)
+// public void testBinaryWeavingITDs1() {runTest("binary weaving ITDs - 1");}
+// public void testBinaryWeavingITDs2() {runTest("binary weaving ITDs - 2");}
+// public void testBinaryWeavingITDs3() {runTest("binary weaving ITDs - 3");}
+
// general tests ... usually just more complex scenarios
public void testReusingTypeVariableLetters() {runTest("reusing type variable letters");}
@@ -405,10 +477,6 @@ public class GenericsTests extends XMLBasedAjcTestCase {
// runTest("Problems resolving type name inside generic class");
// }
- // missing tests in here:
-
- // 1. public ITDs and separate compilation - are the signatures correct for the new public members?
- // 2. ITDF
// -- Pointcut tests...
@@ -631,6 +699,7 @@ public class GenericsTests extends XMLBasedAjcTestCase {
runTest("ajdk notebook: pointcut in generic class example");
}
+
// --- helpers
// Check the signature attribute on a class is correct
diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
index 1abf02a21..4f069aa52 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
+++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
@@ -2876,6 +2876,265 @@
</compile>
</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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5">
+ <message kind="error" line="16" text="Incorrect number of type parameters supplied. The generic type Base&lt;N,M&gt; 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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5">
+ <message kind="error" line="6" text="Type mismatch: cannot convert from List&lt;Integer&gt; to List&lt;String&gt;"/>
+ </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.5">
+ <message kind="error" line="7" text="The method m(List&lt;Integer&gt;) in the type Base&lt;N&gt; is not applicable for the arguments (List&lt;String&gt;)"/>
+ </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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5">
+ <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.5">
+ <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.5">
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5">
+ <message kind="error" line="15" text="Incorrect number of type parameters supplied. The generic type Base&lt;N,M&gt; 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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <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.5"/>
+ <run class="GenericAspectA"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - B">
+ <compile files="GenericAspectB.aj" options="-1.5"/>
+ <run class="GenericAspectB"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - C">
+ <compile files="GenericAspectC.aj" options="-1.5"/>
+ <run class="GenericAspectC"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - D">
+ <compile files="GenericAspectD.aj" options="-1.5"/>
+ <run class="GenericAspectD"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - E">
+ <compile files="GenericAspectE.aj" options="-1.5"/>
+ <run class="GenericAspectE"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - F">
+ <compile files="GenericAspectF.aj" options="-1.5"/>
+ <run class="GenericAspectF"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - G">
+ <compile files="GenericAspectG.aj" options="-1.5"/>
+ <run class="GenericAspectG"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - H">
+ <compile files="GenericAspectH.aj" options="-1.5">
+ <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"/>
+ <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.5"/>
+ <run class="GenericAspectI"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - J">
+ <compile files="GenericAspectJ.aj" options="-1.5"/>
+ <run class="GenericAspectJ"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - K">
+ <compile files="GenericAspectK.aj" options="-1.5"/>
+ <!-- will need error messages in here -->
+ <run class="GenericAspectK"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - L">
+ <compile files="GenericAspectL.aj" options="-1.5"/>
+ <run class="GenericAspectL"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - M">
+ <compile files="GenericAspectM.aj" options="-1.5"/>
+ <!-- will need error messages in here -->
+ <run class="GenericAspectM"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - N">
+ <compile files="GenericAspectN.aj" options="-1.5"/>
+ <run class="GenericAspectN"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - O">
+ <compile files="GenericAspectO.aj" options="-1.5"/>
+ <!-- will need error messages in here -->
+ <run class="GenericAspectO"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - P">
+ <compile files="GenericAspectP.aj" options="-1.5"/>
+ <run class="GenericAspectP"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - Q">
+ <compile files="GenericAspectQ.aj" options="-1.5"/>
+ <run class="GenericAspectQ"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - R">
+ <compile files="GenericAspectR.aj" options="-1.5"/>
+ <run class="GenericAspectR"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - S">
+ <compile files="GenericAspectS.aj" options="-1.5"/>
+ <run class="GenericAspectS"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - T">
+ <compile files="GenericAspectT.aj" options="-1.5"/>
+ </ajc-test>
+ <ajc-test dir="java5/generics/genericaspects/" title="uberaspects - U">
+ <compile files="GenericAspectU.aj" options="-1.5"/>
+ <run class="GenericAspectU"/>
+ </ajc-test>
+
+
+
<ajc-test dir="java5/generics/itds/sharing" title="method itd sharing type variable with generic type">
<compile files="Simple.aj" options="-1.5"/>
<run class="Simple"/>
@@ -2928,7 +3187,11 @@
</ajc-test>
<ajc-test dir="java5/generics/itds" title="Parsing generic ITDs - 5">
- <compile files="Parse5.java" options="-1.5"/>
+ <compile files="Parse5.java" options="-1.5">
+ <message kind="error" line="11" text="Incorrect number of type parameters supplied. The generic type Parse5&lt;T,S&gt; has 2 type parameters, not 3."/>
+ <message kind="error" line="13" text="Incorrect number of type parameters supplied. The generic type Parse5&lt;T,S&gt; 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">
@@ -3016,23 +3279,36 @@
<!-- 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.5,-Xreweavable"/>
+ <compile files="TestA_aspect.aj,TestA_class.java" inpath="code.jar" options="-1.5,-Xreweavable"/>
+ <run class="TestA_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.5,-Xreweavable"/>
<compile files="A1.aj" inpath="code.jar" options="-1.5,-Xreweavable"/>
<run class="BaseClass">
<stderr>
- <line text="Advice from A1 ran successfully"/>
+ <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.5,-Xreweavable"/>
- <compile files="A2.aj" inpath="code.jar" options="-1.5,-Xreweavable"/>
+ <compile files="BaseClass.java,A1.aj" outjar="code.jar" options="-1.5,-Xreweavable,-showWeaveInfo">
+ <message kind="weave" text="Type 'BaseClass' (BaseClass.java) has intertyped field from 'A1' (A1.aj:'java.util.List 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.5,-Xreweavable,-showWeaveInfo">
+ <message kind="weave" text="Type 'BaseClass' (BaseClass.java) has intertyped field from 'A1' (A1.aj:'java.util.List BaseClass.list1')"/>
+ <message kind="weave" text="Type 'BaseClass' (BaseClass.java:12) advised by after advice from 'A1' (A1.aj:7)"/>
+ <message kind="weave" text="Type 'BaseClass' (BaseClass.java) has intertyped field from 'A2' (A2.aj:'java.util.List 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 from A1 ran successfully"/>
- <line text="Advice from A2 ran successfully"/>
+ <line text="Advice count=2"/>
</stderr>
</run>
</ajc-test>
@@ -3042,9 +3318,7 @@
<compile files="A3.aj" inpath="code.jar" options="-1.5,-Xreweavable"/>
<run class="BaseClass">
<stderr>
- <line text="Advice from A1 ran successfully"/>
- <line text="Advice from A2 ran successfully"/>
- <line text="Advice from A3 ran successfully"/>
+ <line text="Advice count=3"/>
</stderr>
</run>
</ajc-test>