aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bugs150/pr110307/Case7.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bugs150/pr110307/Case7.java')
-rw-r--r--tests/bugs150/pr110307/Case7.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/bugs150/pr110307/Case7.java b/tests/bugs150/pr110307/Case7.java
new file mode 100644
index 000000000..ba8bf5af5
--- /dev/null
+++ b/tests/bugs150/pr110307/Case7.java
@@ -0,0 +1,59 @@
+import java.lang.annotation.*;
+import java.lang.ref.*;
+import java.util.*;
+
+public class Case7 {
+
+ public static void main(String []argv) {
+ String s = "hello";
+ Integer i = 35;
+ List l = new ArrayList();
+ List<String> ls = new ArrayList<String>();
+ List<Number> ln = new ArrayList<Number>();
+ List<List> ll = new ArrayList<List>();
+
+ A a = new A();
+ a.setN(ls,s);
+ String s2 = a.getN(ls);
+ System.err.println("in="+s+" out="+s2);
+
+ B b = new B();
+ b.setN(ln,i);
+ System.err.println("in="+i+" out="+b.getN(ln));
+
+ C c = new C();
+ c.setN(ll,l);
+ List l2 = c.getN(ll);
+ System.err.println("in="+l+" out="+l2);
+
+ }
+
+}
+
+
+interface I<N> {
+ N getN(List<N> ns);
+
+ void setN(List<N> ns,N n);
+}
+
+aspect X {
+ Q I<Q>.value;
+
+ public P I<P>.getN(List<P> ps) {
+ return value;
+ }
+
+ public void I<Q>.setN(List<Q> ns,N n) {
+ this.value = n;
+ }
+
+ declare parents : A implements I<String>;
+ declare parents : B implements I<Number>;
+ declare parents : C implements I<List>;
+}
+
+
+class A { }
+class B { }
+class C { }