--- /dev/null
+import java.util.*;
+
+interface AspectInterface<T, S> { }
+
+abstract aspect AbstractAspect<T> implements AspectInterface<T, Integer> {}
+
+aspect ConcreteAspect extends AbstractAspect<String> {
+
+ public static void main(String []argv) {
+ }
+}
--- /dev/null
+import java.util.*;
+
+abstract aspect AbstractAspect<T> implements AspectInterface<T, Integer> {}
+
+interface AspectInterface<T, S extends Number> { }
+
+aspect ConcreteAspect extends AbstractAspect<Student> {
+ public static void main(String []argv) {
+ }
+}
+
+class Student {
+ private String name;
+
+ public Student(String n) {
+ name = n;
+ }
+
+ public String toString() { return name; }
+}
import junit.framework.Test;
+import org.aspectj.systemtest.ajc150.GenericsTests;
import org.aspectj.testing.XMLBasedAjcTestCase;
public class Ajc151Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
//public void testIncorrectlyReferencingPointcuts_pr122452() { runTest("incorrectly referencing pointcuts");}
//public void testIncorrectlyReferencingPointcuts_pr122452_2() { runTest("incorrectly referencing pointcuts - 2");}
+ public void testMixingNumbersOfTypeParameters_pr125080() {
+ runTest("mixing numbers of type parameters");
+ GenericsTests.verifyClassSignature(ajc,"AspectInterface","<T:Ljava/lang/Object;S:Ljava/lang/Object;>Ljava/lang/Object;");
+ GenericsTests.verifyClassSignature(ajc,"AbstractAspect","<T:Ljava/lang/Object;>Ljava/lang/Object;LAspectInterface<TT;Ljava/lang/Integer;>;");
+ GenericsTests.verifyClassSignature(ajc,"ConcreteAspect","LAbstractAspect<Ljava/lang/String;>;");
+ }
+
+ public void testMixingNumbersOfTypeParameters_pr125080_2() {
+ runTest("mixing numbers of type parameters - 2");
+ GenericsTests.verifyClassSignature(ajc,"AspectInterface","<T:Ljava/lang/Object;S:Ljava/lang/Number;>Ljava/lang/Object;");
+ GenericsTests.verifyClassSignature(ajc,"AbstractAspect","<T:Ljava/lang/Object;>Ljava/lang/Object;LAspectInterface<TT;Ljava/lang/Integer;>;");
+ GenericsTests.verifyClassSignature(ajc,"ConcreteAspect","LAbstractAspect<LStudent;>;");
+ }
/////////////////////////////////////////
public static Test suite() {
<ajc-test dir="bugs151" title="incorrectly referencing pointcuts - 2">
<compile files="pr122452_2.aj" options="-1.5"/>
</ajc-test>
+
+ <ajc-test dir="bugs151/pr125080" title="mixing numbers of type parameters">
+ <compile files="Test.java" options="-1.5"/>
+ <run class="ConcreteAspect"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs151/pr125080" title="mixing numbers of type parameters - 2">
+ <compile files="Test2.java" options="-1.5"/>
+ <run class="ConcreteAspect"/>
+ </ajc-test>
</suite>
\ No newline at end of file