aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraclement <aclement>2005-08-12 16:47:10 +0000
committeraclement <aclement>2005-08-12 16:47:10 +0000
commitaee5f8a89bc4cd4c91a801249c25c9527d056272 (patch)
tree191b2519fa8b2f00f0841b535c0141b385f16bb7
parent68bfe34f32fe2188b814c9361ee0fa242ce645cd (diff)
downloadaspectj-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.aj15
-rw-r--r--tests/java5/generics/itds/sharing/MethodA2.aj16
-rw-r--r--tests/java5/generics/itds/sharing/MethodA3.aj17
-rw-r--r--tests/java5/generics/itds/sharing/MethodA4.aj17
-rw-r--r--tests/java5/generics/itds/sharing/MethodB.aj17
-rw-r--r--tests/java5/generics/itds/sharing/MethodC.aj16
-rw-r--r--tests/java5/generics/itds/sharing/MethodD.aj15
-rw-r--r--tests/java5/generics/itds/sharing/MethodE.aj16
-rw-r--r--tests/java5/generics/itds/sharing/MethodF.aj16
-rw-r--r--tests/java5/generics/itds/sharing/MethodG.aj19
-rw-r--r--tests/java5/generics/itds/sharing/MethodH.aj19
-rw-r--r--tests/java5/generics/itds/sharing/MethodI.aj14
-rw-r--r--tests/java5/generics/itds/sharing/MethodI2.aj15
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) { }
+}