ProtectedMemberAccess3.java revision 3643:589ff4d43428
116359Sasami/*
216359Sasami * @test  /nodynamiccopyright/
316359Sasami * @bug 4319507 4785453
416359Sasami * @summary Verify correct implementation of JLS2e 6.6.2.1
516359Sasami * @author maddox
650477Speter *
716359Sasami * @compile/fail/ref=ProtectedMemberAccess3.out --diags:formatterOptions=-simpleNames;layout=%b:%l:%_%m ProtectedMemberAccess3.java
816359Sasami */
916359Sasami
1016359Sasami// 46 errors expected.
1116359Sasami
1216359Sasamiimport pkg.SuperClass;
1385532Sru
1416359Sasamiclass ProtectedMemberAccess3 {
1516359Sasami
1616359Sasami  // Since this class is not a subclass of the class in which the
1785532Sru  // protected members are declared, all of the accesses are illegal.
1816359Sasami
1916359Sasami  pkg.SuperClass x = new pkg.SuperClass();
2016359Sasami
2130665Skato  static pkg.SuperClass sx = new pkg.SuperClass();
22169612Swkoszek
2330665Skato  class Inner {
2452651Smarcel
2516359Sasami    int i = x.pi;                               // illegal
2616359Sasami    int j = x.spi;                              // illegal
2716359Sasami
2879014Simp    int n = sx.pi;                              // illegal
2916359Sasami    int m = sx.spi;                             // illegal
3052651Smarcel
3185909Simp    //static int sn = sx.pi;
3216359Sasami    //static int sm = sx.spi;
33154975Snyan
3453689Snyan    int w = x.pm();                             // illegal
35154975Snyan    int y = x.spm();                            // illegal
36154975Snyan
37242870Snyan    int u = sx.pm();                            // illegal
38242870Snyan    int v = sx.spm();                           // illegal
39242870Snyan
40242870Snyan    pkg.SuperClass.pC  obj1;                    // illegal
4116359Sasami    pkg.SuperClass.spC obj2;                    // illegal
4216359Sasami
4316359Sasami    pkg.SuperClass.pI  obj3;                    // illegal
4416359Sasami    pkg.SuperClass.spI obj4;                    // illegal
4569135Speter
4616359Sasami    Object o1 = (pkg.SuperClass.pC) null;       // illegal
4769135Speter    Object o2 = (pkg.SuperClass.spC) null;      // illegal
4816359Sasami
4969135Speter    Object o3 = (pkg.SuperClass.pI) null;       // illegal
5038833Skato    Object o4 = (pkg.SuperClass.spI) null;      // illegal
5116359Sasami
5216359Sasami    class C1 extends pkg.SuperClass.pC {}       // illegal
5386276Simp    class C2 extends pkg.SuperClass.spC {}      // illegal
5486276Simp
5585909Simp    //interface I1 extends pkg.SuperClass.pI {}
56    //interface I2 extends pkg.SuperClass.spI {}
57
58    // Not allowed in inner classes.
59    // static { ... }
60
61    void m() {
62
63      pkg.SuperClass lx = new pkg.SuperClass();
64
65      x.pi  = 1;                                // illegal
66      x.spi = 2;                                // illegal
67
68      sx.pi  = 1;                               // illegal
69      sx.spi = 2;                               // illegal
70
71      lx.pi  = 1;                               // illegal
72      lx.spi = 2;                               // illegal
73
74      int t = x.pm();                           // illegal
75      int y = x.spm();                          // illegal
76
77      int u = sx.pm();                          // illegal
78      int v = sx.spm();                         // illegal
79
80      int w = lx.pm();                          // illegal
81      int z = lx.spm();                         // illegal
82
83      int i = x.pi;                             // illegal
84      int j = x.spi;                            // illegal
85
86      int n = sx.pi;                            // illegal
87      int m = sx.spi;                           // illegal
88
89      int k = lx.pi;                            // illegal
90      int l = lx.spi;                           // illegal
91
92      pkg.SuperClass.pC  obj1;                  // illegal
93      pkg.SuperClass.spC obj2;                  // illegal
94
95      pkg.SuperClass.pI  obj3;                  // illegal
96      pkg.SuperClass.spI obj4;                  // illegal
97
98      Object o1 = (pkg.SuperClass.pC) null;     // illegal
99      Object o2 = (pkg.SuperClass.spC) null;    // illegal
100
101      Object o3 = (pkg.SuperClass.pI) null;     // illegal
102      Object o4 = (pkg.SuperClass.spI) null;    // illegal
103
104      class C1 extends pkg.SuperClass.pC {}     // illegal
105      class C2 extends pkg.SuperClass.spC {}    // illegal
106
107      //interface I1 extends pkg.SuperClass.pI {}
108      //interface I2 extends pkg.SuperClass.spI {}
109
110    }
111
112  }
113
114}
115