ProtectedMemberAccess2.java revision 3643:589ff4d43428
1/*
2 * @test  /nodynamiccopyright/
3 * @bug 4319507 4785453
4 * @summary Verify correct implementation of JLS2e 6.6.2.1
5 * @author maddox
6 *
7 * @compile/fail/ref=ProtectedMemberAccess2.out --diags:formatterOptions=-simpleNames;layout=%b:%l:%_%m ProtectedMemberAccess2.java
8 */
9
10// 71 errors expected.
11
12import pkg.SuperClass;
13
14class ProtectedMemberAccess2 {
15
16  // Since this class is not a subclass of the class in which the
17  // protected members are declared, all of the accesses are illegal.
18
19  pkg.SuperClass x = new pkg.SuperClass();
20
21  static pkg.SuperClass sx = new pkg.SuperClass();
22
23  int i = x.pi;                                 // illegal
24  int j = x.spi;                                // illegal
25
26  int n = sx.pi;                                // illegal
27  int m = sx.spi;                               // illegal
28
29  static int sn = sx.pi;                        // illegal
30  static int sm = sx.spi;                       // illegal
31
32  int w = x.pm();                               // illegal
33  int y = x.spm();                              // illegal
34
35  int u = sx.pm();                              // illegal
36  int v = sx.spm();                             // illegal
37
38  pkg.SuperClass.pC  obj1;                      // illegal
39  pkg.SuperClass.spC obj2;                      // illegal
40
41  pkg.SuperClass.pI  obj3;                      // illegal
42  pkg.SuperClass.spI obj4;                      // illegal
43
44  Object o1 = (pkg.SuperClass.pC) null;         // illegal
45  Object o2 = (pkg.SuperClass.spC) null;        // illegal
46
47  Object o3 = (pkg.SuperClass.pI) null;         // illegal
48  Object o4 = (pkg.SuperClass.spI) null;        // illegal
49
50  class C1 extends pkg.SuperClass.pC {}         // illegal
51  class C2 extends pkg.SuperClass.spC {}        // illegal
52
53  interface I1 extends pkg.SuperClass.pI {}     // illegal
54  interface I2 extends pkg.SuperClass.spI {}    // illegal
55
56  static {
57
58    pkg.SuperClass lx = new pkg.SuperClass();
59
60    sx.pi  = 1;                                 // illegal
61    sx.spi = 2;                                 // illegal
62
63    lx.pi  = 1;                                 // illegal
64    lx.spi = 2;                                 // illegal
65
66    int n = sx.pi;                              // illegal
67    int m = sx.spi;                             // illegal
68
69    int k = lx.pi;                              // illegal
70    int l = lx.spi;                             // illegal
71
72    int u = sx.pm();                            // illegal
73    int v = sx.spm();                           // illegal
74
75    int w = lx.pm();                            // illegal
76    int z = lx.spm();                           // illegal
77
78    pkg.SuperClass.pC  obj1;                    // illegal
79    pkg.SuperClass.spC obj2;                    // illegal
80
81    pkg.SuperClass.pI  obj3;                    // illegal
82    pkg.SuperClass.spI obj4;                    // illegal
83
84    Object o1 = (pkg.SuperClass.pC) null;       // illegal
85    Object o2 = (pkg.SuperClass.spC) null;      // illegal
86
87    Object o3 = (pkg.SuperClass.pI) null;       // illegal
88    Object o4 = (pkg.SuperClass.spI) null;      // illegal
89
90    //class C1 extends pkg.SuperClass.pC {}
91    class C2 extends pkg.SuperClass.spC {}      // illegal
92
93    //interface I1 extends pkg.SuperClass.pI {}
94    //interface I2 extends pkg.SuperClass.spI {}
95
96  }
97
98  void m() {
99
100    pkg.SuperClass lx = new pkg.SuperClass();
101
102    x.pi  = 1;                                  // illegal
103    x.spi = 2;                                  // illegal
104
105    sx.pi  = 1;                                 // illegal
106    sx.spi = 2;                                 // illegal
107
108    lx.pi  = 1;                                 // illegal
109    lx.spi = 2;                                 // illegal
110
111    int t = x.pm();                             // illegal
112    int y = x.spm();                            // illegal
113
114    int u = sx.pm();                            // illegal
115    int v = sx.spm();                           // illegal
116
117    int w = lx.pm();                            // illegal
118    int z = lx.spm();                           // illegal
119
120    int i = x.pi;                               // illegal
121    int j = x.spi;                              // illegal
122
123    int n = sx.pi;                              // illegal
124    int m = sx.spi;                             // illegal
125
126    int k = lx.pi;                              // illegal
127    int l = lx.spi;                             // illegal
128
129    pkg.SuperClass.pC  obj1;                    // illegal
130    pkg.SuperClass.spC obj2;                    // illegal
131
132    pkg.SuperClass.pI  obj3;                    // illegal
133    pkg.SuperClass.spI obj4;                    // illegal
134
135    Object o1 = (pkg.SuperClass.pC) null;       // illegal
136    Object o2 = (pkg.SuperClass.spC) null;      // illegal
137
138    Object o3 = (pkg.SuperClass.pI) null;       // illegal
139    Object o4 = (pkg.SuperClass.spI) null;      // illegal
140
141    class C1 extends pkg.SuperClass.pC {}       // illegal
142    class C2 extends pkg.SuperClass.spC {}      // illegal
143
144    //interface I1 extends pkg.SuperClass.pI {}
145    //interface I2 extends pkg.SuperClass.spI {}
146
147  }
148
149}
150