--- /dev/null
+aspect Asp1 {
+ declare parents: B* implements I<Integer>; // error
+}
--- /dev/null
+aspect Asp2 {
+ declare parents: B* implements I<Integer>; // error
+}
--- /dev/null
+aspect Asp3 {
+ declare parents: B* implements I; // error
+}
--- /dev/null
+aspect Asp4 {
+ declare parents: B* implements I<Double>;
+}
--- /dev/null
+interface I<T>{ }
+
+public class Base1 implements I<String> {
+ public static void main(String[]argv) { }
+}
--- /dev/null
+interface I<T>{ }
+
+public class Base2 implements I {
+ public static void main(String[]argv) { }
+}
--- /dev/null
+interface I<T>{ }
+
+public class Base3 implements I<Double> {
+ public static void main(String[]argv) { }
+}
--- /dev/null
+// OK - since new parent matches
+interface I<T>{ }
+
+public class Base4 implements I<Double> {
+ public static void main(String[]argv) { }
+}