diff options
author | aclement <aclement> | 2005-08-12 16:47:10 +0000 |
---|---|---|
committer | aclement <aclement> | 2005-08-12 16:47:10 +0000 |
commit | aee5f8a89bc4cd4c91a801249c25c9527d056272 (patch) | |
tree | 191b2519fa8b2f00f0841b535c0141b385f16bb7 | |
parent | 68bfe34f32fe2188b814c9361ee0fa242ce645cd (diff) | |
download | aspectj-aee5f8a89bc4cd4c91a801249c25c9527d056272.tar.gz aspectj-aee5f8a89bc4cd4c91a801249c25c9527d056272.zip |
genericitds: method ITDs that use their target types generic type variables.
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodA.aj | 15 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodA2.aj | 16 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodA3.aj | 17 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodA4.aj | 17 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodB.aj | 17 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodC.aj | 16 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodD.aj | 15 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodE.aj | 16 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodF.aj | 16 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodG.aj | 19 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodH.aj | 19 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodI.aj | 14 | ||||
-rw-r--r-- | tests/java5/generics/itds/sharing/MethodI2.aj | 15 |
13 files changed, 212 insertions, 0 deletions
diff --git a/tests/java5/generics/itds/sharing/MethodA.aj b/tests/java5/generics/itds/sharing/MethodA.aj new file mode 100644 index 000000000..66a555cbf --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodA.aj @@ -0,0 +1,15 @@ +import java.util.*; + +public class MethodA { + public static void main(String []argv) { + Base<Integer> base = new Base<Integer>(); + List<Integer> intList = new ArrayList<Integer>(); + base.m(intList); + } +} + +class Base<N extends Number> { } + +aspect X { + public void Base<Z>.m(List<Z> lz) {}; // OK, Z becomes N in parameter +} diff --git a/tests/java5/generics/itds/sharing/MethodA2.aj b/tests/java5/generics/itds/sharing/MethodA2.aj new file mode 100644 index 000000000..2b08dc504 --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodA2.aj @@ -0,0 +1,16 @@ +import java.util.*; + +public class MethodA2 { + public static void main(String []argv) { + Base<Integer> base = new Base<Integer>(); + List<Integer> intList = base.m(); + } +} + +class Base<N extends Number> { } + +aspect X { + public List<Z> Base<Z>.m() { // OK, Z becomes N in return type + return null; + }; +} diff --git a/tests/java5/generics/itds/sharing/MethodA3.aj b/tests/java5/generics/itds/sharing/MethodA3.aj new file mode 100644 index 000000000..f7448a5e2 --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodA3.aj @@ -0,0 +1,17 @@ +import java.util.*; + +public class MethodA3 { + public static void main(String []argv) { + Base<Integer> base = new Base<Integer>(); + List<Integer> intList = new ArrayList<Integer>(); + intList = base.m(intList); + } +} + +class Base<N extends Number> { } + +aspect X { + public List<Z> Base<Z>.m(List<Z> lz) { // OK, Z becomes N in return type and parameter + return lz; + }; +} diff --git a/tests/java5/generics/itds/sharing/MethodA4.aj b/tests/java5/generics/itds/sharing/MethodA4.aj new file mode 100644 index 000000000..64c2aced0 --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodA4.aj @@ -0,0 +1,17 @@ +import java.util.*; + +public class MethodA4 { + public static void main(String []argv) { + Base<Integer> base = new Base<Integer>(); + List<Integer> intList = base.m(); + } +} + +class Base<N extends Number> { } + +aspect X { + public List<Z> Base<Z>.m() { // OK, Z becomes N in return type + List<Z> lz = new ArrayList<Z>(); + return lz; + }; +} diff --git a/tests/java5/generics/itds/sharing/MethodB.aj b/tests/java5/generics/itds/sharing/MethodB.aj new file mode 100644 index 000000000..0d6bbc380 --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodB.aj @@ -0,0 +1,17 @@ +import java.util.*; + +public class MethodB { + public static void main(String []argv) { + Base<Integer,String> base = new Base<Integer,String>(); + List<Integer> intList = new ArrayList<Integer>(); + + } +} + +class Base<N extends Number,M> { + +} + +aspect X { + public List<Z> Base<Z>.m() { return null;}; // CE only supplied 1 type parameter +} diff --git a/tests/java5/generics/itds/sharing/MethodC.aj b/tests/java5/generics/itds/sharing/MethodC.aj new file mode 100644 index 000000000..0a2d7a23e --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodC.aj @@ -0,0 +1,16 @@ +import java.util.*; + +public class MethodC { + public static void main(String []argv) { + Base<Integer> base = new Base<Integer>(); + List<List<Integer>> intList2 = new ArrayList<List<Integer>>(); + base.m(intList2); + } +} + +class Base<N extends Number> { +} + +aspect X { + public void Base<Z>.m(List<List<Z>> llz) {}; // ok - nested but OK +} diff --git a/tests/java5/generics/itds/sharing/MethodD.aj b/tests/java5/generics/itds/sharing/MethodD.aj new file mode 100644 index 000000000..c67a907ce --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodD.aj @@ -0,0 +1,15 @@ +import java.util.*; + +public class MethodD { + public static void main(String []argv) { + Base<Double,String> base = new Base<Double,String>(); + base.m(new HashMap<Double,String>()); + } +} + +class Base<N extends Number,S> { +} + +aspect X { + public void Base<A,B>.m(Map<A,B> mabs) {}; // ok multiple +} diff --git a/tests/java5/generics/itds/sharing/MethodE.aj b/tests/java5/generics/itds/sharing/MethodE.aj new file mode 100644 index 000000000..546747aaa --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodE.aj @@ -0,0 +1,16 @@ +import java.util.*; + +public class MethodE { + public static void main(String []argv) { + Base<Integer> base = new Base<Integer>(); + List<String> stringList = new ArrayList<String>(); + base.m(); + } +} + +class Base<N extends Number> { +} + +aspect X { + public List<String> Base<Z>.m() { return null;}; // ok - specified type variable but didnt use it +} diff --git a/tests/java5/generics/itds/sharing/MethodF.aj b/tests/java5/generics/itds/sharing/MethodF.aj new file mode 100644 index 000000000..0416c8e54 --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodF.aj @@ -0,0 +1,16 @@ +import java.util.*; + +public class MethodF { + public static void main(String []argv) { + Base<Float,Double,String> base = new Base<Float,Double,String>(); + + Map<Double,Float> mii = base.m(new HashMap<String,Float>()); + } +} + +class Base<P,N extends Number,S> { +} + +aspect X { + public Map<B,A> Base<A,B,C>.m(Map<C,A> lc) { return null;} // ok multiple in funny orders +} diff --git a/tests/java5/generics/itds/sharing/MethodG.aj b/tests/java5/generics/itds/sharing/MethodG.aj new file mode 100644 index 000000000..d0be22c47 --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodG.aj @@ -0,0 +1,19 @@ +import java.util.*; + +public aspect MethodG { + + // visibility options... + public List<Z> Base<Z>.i(List<Z> lz) {return null;} // ok + private List<Z> Base<Z>.j(List<Z> lz) {return null;} // ok + List<Z> Base<Z>.k(List<Z> lz) {return null;} // ok + + public static void main(String []argv) { + Base<Integer> base = new Base<Integer>(); + List<Integer> intList = new ArrayList<Integer>(); + List<Integer> li1 = base.i(intList); + List<Integer> li2 = base.j(intList); + List<Integer> li3 = base.k(intList); + } +} + +class Base<N extends Number> { } diff --git a/tests/java5/generics/itds/sharing/MethodH.aj b/tests/java5/generics/itds/sharing/MethodH.aj new file mode 100644 index 000000000..8df78ae30 --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodH.aj @@ -0,0 +1,19 @@ +import java.util.*; + +public class MethodH { + public static void main(String []argv) { + Base<Integer> baseInt = new Base<Integer>(); + Base<String> baseString = new Base<String>(); + + List<Integer> intList = new ArrayList<Integer>(); + List<String> strList = new ArrayList<String>(); + List<Integer> li = baseInt.m(intList); + List<String> ls = baseString.m(strList); + } +} + +class Base<N> { } + +aspect X { + public List<Z> Base<Z>.m(List<Z> lz) { return null;} // OK, Z becomes N in first case, S in the second ;) +} diff --git a/tests/java5/generics/itds/sharing/MethodI.aj b/tests/java5/generics/itds/sharing/MethodI.aj new file mode 100644 index 000000000..f318f241e --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodI.aj @@ -0,0 +1,14 @@ +import java.util.*; + +public class MethodI { + public static void main(String []argv) { + Base<Integer> base = new Base<Integer>(); + List<String> ls = base.m(); // error, violates bounds + } +} + +class Base<N extends Number> { } + +aspect X { + public List<Z> Base<Z>.m() { return null;} +} diff --git a/tests/java5/generics/itds/sharing/MethodI2.aj b/tests/java5/generics/itds/sharing/MethodI2.aj new file mode 100644 index 000000000..629f89145 --- /dev/null +++ b/tests/java5/generics/itds/sharing/MethodI2.aj @@ -0,0 +1,15 @@ +import java.util.*; + +public class MethodI2 { + public static void main(String []argv) { + Base<Integer> base = new Base<Integer>(); + List<String> ls = new ArrayList<String>(); + base.m(ls); // error, violates bounds + } +} + +class Base<N extends Number> { } + +aspect X { + public void Base<Z>.m(List<Z> lz) { } +} |