ProtectedMemberAccess3.java revision 3547:e18190929198
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=ProtectedMemberAccess3.out -diags:formatterOptions=-simpleNames;layout=%b:%l:%_%m ProtectedMemberAccess3.java
8 */
9
10// 46 errors expected.
11
12import pkg.SuperClass;
13
14class ProtectedMemberAccess3 {
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  class Inner {
24
25    int i = x.pi;                               // illegal
26    int j = x.spi;                              // illegal
27
28    int n = sx.pi;                              // illegal
29    int m = sx.spi;                             // illegal
30
31    //static int sn = sx.pi;
32    //static int sm = sx.spi;
33
34    int w = x.pm();                             // illegal
35    int y = x.spm();                            // illegal
36
37    int u = sx.pm();                            // illegal
38    int v = sx.spm();                           // illegal
39
40    pkg.SuperClass.pC  obj1;                    // illegal
41    pkg.SuperClass.spC obj2;                    // illegal
42
43    pkg.SuperClass.pI  obj3;                    // illegal
44    pkg.SuperClass.spI obj4;                    // illegal
45
46    Object o1 = (pkg.SuperClass.pC) null;       // illegal
47    Object o2 = (pkg.SuperClass.spC) null;      // illegal
48
49    Object o3 = (pkg.SuperClass.pI) null;       // illegal
50    Object o4 = (pkg.SuperClass.spI) null;      // illegal
51
52    class C1 extends pkg.SuperClass.pC {}       // illegal
53    class C2 extends pkg.SuperClass.spC {}      // illegal
54
55    //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