diff options
author | aclement <aclement> | 2005-08-03 08:40:55 +0000 |
---|---|---|
committer | aclement <aclement> | 2005-08-03 08:40:55 +0000 |
commit | 7dde3368a16187a53157aaa89b64d48398307765 (patch) | |
tree | e6b8966fef3c504db0b66164d59a59bd6239d677 | |
parent | fbb19cca208211667f34316a0d8e15cae60987dc (diff) | |
download | aspectj-7dde3368a16187a53157aaa89b64d48398307765.tar.gz aspectj-7dde3368a16187a53157aaa89b64d48398307765.zip |
genericitds: now we're getting silly..
-rw-r--r-- | tests/java5/generics/itds/GenericMethodITD11.aj | 24 | ||||
-rw-r--r-- | tests/java5/generics/itds/GenericMethodITD12.aj | 26 | ||||
-rw-r--r-- | tests/java5/generics/itds/GenericMethodITD13.aj | 26 | ||||
-rw-r--r-- | tests/java5/generics/itds/GenericMethodITD14.aj | 27 | ||||
-rw-r--r-- | tests/java5/generics/itds/GenericMethodITD15.aj | 29 |
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) {} +} |