test/tools/javac/generics/6711619/T6711619a.java

Thu, 31 Aug 2017 15:17:03 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:17:03 +0800
changeset 2525
2eb010b6cb22
parent 384
ed31953ca025
parent 0
959103a6100f
permissions
-rw-r--r--

merge

aoqi@0 1 /*
aoqi@0 2 * @test /nodynamiccopyright/
aoqi@0 3 * @bug 6711619
aoqi@0 4 *
aoqi@0 5 * @summary javac doesn't allow access to protected members in intersection types
aoqi@0 6 * @author Maurizio Cimadamore
aoqi@0 7 *
aoqi@0 8 * @compile/fail/ref=T6711619a.out -XDrawDiagnostics T6711619a.java
aoqi@0 9 */
aoqi@0 10 class T6711619a {
aoqi@0 11
aoqi@0 12 static class A {
aoqi@0 13 private void a() {}
aoqi@0 14 private A a;
aoqi@0 15 }
aoqi@0 16 static class B extends A {
aoqi@0 17 private B b() {}
aoqi@0 18 private B b;
aoqi@0 19 }
aoqi@0 20 static interface I{
aoqi@0 21 void i();
aoqi@0 22 }
aoqi@0 23 static interface I1{
aoqi@0 24 void i1();
aoqi@0 25 }
aoqi@0 26 static class E extends B implements I, I1{
aoqi@0 27 public void i() {}
aoqi@0 28 public void i1() {}
aoqi@0 29 }
aoqi@0 30 static class C<W extends B & I1, T extends W>{
aoqi@0 31 T t;
aoqi@0 32 W w;
aoqi@0 33 C(W w, T t) {
aoqi@0 34 this.w = w;
aoqi@0 35 this.t = t;
aoqi@0 36 }
aoqi@0 37 }
aoqi@0 38
aoqi@0 39 static void testMemberMethods(C<? extends A, ? extends I> arg) {
aoqi@0 40 arg.t.a();
aoqi@0 41 arg.t.b();
aoqi@0 42 }
aoqi@0 43
aoqi@0 44 static void testMemberFields(C<? extends A, ? extends I> arg) {
aoqi@0 45 A ta; B tb;
aoqi@0 46 ta = arg.t.a;
aoqi@0 47 tb = arg.t.b;
aoqi@0 48 ta = arg.w.a;
aoqi@0 49 tb = arg.w.b;
aoqi@0 50 }
aoqi@0 51 }

mercurial