aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraclement <aclement>2005-08-03 08:40:55 +0000
committeraclement <aclement>2005-08-03 08:40:55 +0000
commit7dde3368a16187a53157aaa89b64d48398307765 (patch)
treee6b8966fef3c504db0b66164d59a59bd6239d677
parentfbb19cca208211667f34316a0d8e15cae60987dc (diff)
downloadaspectj-7dde3368a16187a53157aaa89b64d48398307765.tar.gz
aspectj-7dde3368a16187a53157aaa89b64d48398307765.zip
genericitds: now we're getting silly..
-rw-r--r--tests/java5/generics/itds/GenericMethodITD11.aj24
-rw-r--r--tests/java5/generics/itds/GenericMethodITD12.aj26
-rw-r--r--tests/java5/generics/itds/GenericMethodITD13.aj26
-rw-r--r--tests/java5/generics/itds/GenericMethodITD14.aj27
-rw-r--r--tests/java5/generics/itds/GenericMethodITD15.aj29
5 files changed, 132 insertions, 0 deletions
diff --git a/tests/java5/generics/itds/GenericMethodITD11.aj b/tests/java5/generics/itds/GenericMethodITD11.aj
new file mode 100644
index 000000000..df665b92c
--- /dev/null
+++ b/tests/java5/generics/itds/GenericMethodITD11.aj
@@ -0,0 +1,24 @@
+import java.util.*;
+
+class Base {
+}
+
+public class GenericMethodITD11 {
+
+ public static void main(String[] argv) {
+ List<A> as = new ArrayList<A>();
+ new Base().crazy(as); // ok
+ }
+}
+
+interface Foo<T> {
+ public void m(T t);
+}
+
+class A implements Foo<A> {
+ public void m(A a) {}
+}
+
+aspect X {
+ <R extends Foo<? extends R>> void Base.crazy(List<R> lr) {}
+}
diff --git a/tests/java5/generics/itds/GenericMethodITD12.aj b/tests/java5/generics/itds/GenericMethodITD12.aj
new file mode 100644
index 000000000..53a45a5e2
--- /dev/null
+++ b/tests/java5/generics/itds/GenericMethodITD12.aj
@@ -0,0 +1,26 @@
+import java.util.*;
+
+class Base {
+}
+
+public class GenericMethodITD12 {
+
+ public static void main(String[] argv) {
+ List<A> as = new ArrayList<A>();
+ new Base().crazy(as); // A doesnt implement Foo<? extends A>
+ }
+}
+
+interface Foo<T> {
+ public void m(T t);
+}
+
+class B {}
+
+class A implements Foo<B> {
+ public void m(B a) {}
+}
+
+aspect X {
+ <R extends Foo<? extends R>> void Base.crazy(List<R> lr) {}
+}
diff --git a/tests/java5/generics/itds/GenericMethodITD13.aj b/tests/java5/generics/itds/GenericMethodITD13.aj
new file mode 100644
index 000000000..a27a95f9d
--- /dev/null
+++ b/tests/java5/generics/itds/GenericMethodITD13.aj
@@ -0,0 +1,26 @@
+import java.util.*;
+
+class Base {
+}
+
+public class GenericMethodITD13 {
+
+ public static void main(String[] argv) {
+ List<A> as = new ArrayList<A>();
+ new Base().crazy(as); // ok. A implements Foo<C> where C extends A !!
+ }
+}
+
+interface Foo<T> {
+ public void m(T t);
+}
+
+class C extends A { }
+
+class A implements Foo<C> {
+ public void m(C a) {}
+}
+
+aspect X {
+ <R extends Foo<? extends R>> void Base.crazy(List<R> lr) {}
+}
diff --git a/tests/java5/generics/itds/GenericMethodITD14.aj b/tests/java5/generics/itds/GenericMethodITD14.aj
new file mode 100644
index 000000000..47b2aca37
--- /dev/null
+++ b/tests/java5/generics/itds/GenericMethodITD14.aj
@@ -0,0 +1,27 @@
+import java.util.*;
+
+class Base {
+}
+
+public class GenericMethodITD14 {
+
+ public static void main(String[] argv) {
+ List<A> as = new ArrayList<A>();
+ new Base().crazy(as); // bad. A implements Foo<C> but C is a
+ // subclass of A, not a superclass
+ }
+}
+
+interface Foo<T> {
+ public void m(T t);
+}
+
+class C extends A { }
+
+class A implements Foo<C> {
+ public void m(C a) {}
+}
+
+aspect X {
+ <R extends Foo<? super R>> void Base.crazy(List<R> lr) {}
+}
diff --git a/tests/java5/generics/itds/GenericMethodITD15.aj b/tests/java5/generics/itds/GenericMethodITD15.aj
new file mode 100644
index 000000000..e711539d7
--- /dev/null
+++ b/tests/java5/generics/itds/GenericMethodITD15.aj
@@ -0,0 +1,29 @@
+import java.util.*;
+
+class Base {
+}
+
+public class GenericMethodITD15 {
+
+ public static void main(String[] argv) {
+ List<A> as = new ArrayList<A>();
+ new Base().crazy(as); // ok. A implements Foo<C> and C is a superclass of A
+ }
+}
+
+interface Foo<T> {
+ public void m(T t);
+}
+
+
+class C {}
+
+class B extends C {}
+
+class A extends B implements Foo<C> {
+ public void m(C a) {}
+}
+
+aspect X {
+ <R extends Foo<? super R>> void Base.crazy(List<R> lr) {}
+}