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