1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/test/tools/javac/protectedAccess/ProtectedMemberAccess2.java Sat Dec 01 00:00:00 2007 +0000 1.3 @@ -0,0 +1,149 @@ 1.4 +/* 1.5 + * @test /nodynamiccopyright/ 1.6 + * @bug 4319507 4785453 1.7 + * @summary Verify correct implementation of JLS2e 6.6.2.1 1.8 + * @author maddox 1.9 + * 1.10 + * @compile/fail/ref=ProtectedMemberAccess2.out -XDstdout -XDdiags=%b:%l:%_%m ProtectedMemberAccess2.java 1.11 + */ 1.12 + 1.13 +// 71 errors expected. 1.14 + 1.15 +import pkg.SuperClass; 1.16 + 1.17 +class ProtectedMemberAccess2 { 1.18 + 1.19 + // Since this class is not a subclass of the class in which the 1.20 + // protected members are declared, all of the accesses are illegal. 1.21 + 1.22 + pkg.SuperClass x = new pkg.SuperClass(); 1.23 + 1.24 + static pkg.SuperClass sx = new pkg.SuperClass(); 1.25 + 1.26 + int i = x.pi; // illegal 1.27 + int j = x.spi; // illegal 1.28 + 1.29 + int n = sx.pi; // illegal 1.30 + int m = sx.spi; // illegal 1.31 + 1.32 + static int sn = sx.pi; // illegal 1.33 + static int sm = sx.spi; // illegal 1.34 + 1.35 + int w = x.pm(); // illegal 1.36 + int y = x.spm(); // illegal 1.37 + 1.38 + int u = sx.pm(); // illegal 1.39 + int v = sx.spm(); // illegal 1.40 + 1.41 + pkg.SuperClass.pC obj1; // illegal 1.42 + pkg.SuperClass.spC obj2; // illegal 1.43 + 1.44 + pkg.SuperClass.pI obj3; // illegal 1.45 + pkg.SuperClass.spI obj4; // illegal 1.46 + 1.47 + Object o1 = (pkg.SuperClass.pC) null; // illegal 1.48 + Object o2 = (pkg.SuperClass.spC) null; // illegal 1.49 + 1.50 + Object o3 = (pkg.SuperClass.pI) null; // illegal 1.51 + Object o4 = (pkg.SuperClass.spI) null; // illegal 1.52 + 1.53 + class C1 extends pkg.SuperClass.pC {} // illegal 1.54 + class C2 extends pkg.SuperClass.spC {} // illegal 1.55 + 1.56 + interface I1 extends pkg.SuperClass.pI {} // illegal 1.57 + interface I2 extends pkg.SuperClass.spI {} // illegal 1.58 + 1.59 + static { 1.60 + 1.61 + pkg.SuperClass lx = new pkg.SuperClass(); 1.62 + 1.63 + sx.pi = 1; // illegal 1.64 + sx.spi = 2; // illegal 1.65 + 1.66 + lx.pi = 1; // illegal 1.67 + lx.spi = 2; // illegal 1.68 + 1.69 + int n = sx.pi; // illegal 1.70 + int m = sx.spi; // illegal 1.71 + 1.72 + int k = lx.pi; // illegal 1.73 + int l = lx.spi; // illegal 1.74 + 1.75 + int u = sx.pm(); // illegal 1.76 + int v = sx.spm(); // illegal 1.77 + 1.78 + int w = lx.pm(); // illegal 1.79 + int z = lx.spm(); // illegal 1.80 + 1.81 + pkg.SuperClass.pC obj1; // illegal 1.82 + pkg.SuperClass.spC obj2; // illegal 1.83 + 1.84 + pkg.SuperClass.pI obj3; // illegal 1.85 + pkg.SuperClass.spI obj4; // illegal 1.86 + 1.87 + Object o1 = (pkg.SuperClass.pC) null; // illegal 1.88 + Object o2 = (pkg.SuperClass.spC) null; // illegal 1.89 + 1.90 + Object o3 = (pkg.SuperClass.pI) null; // illegal 1.91 + Object o4 = (pkg.SuperClass.spI) null; // illegal 1.92 + 1.93 + //class C1 extends pkg.SuperClass.pC {} 1.94 + class C2 extends pkg.SuperClass.spC {} // illegal 1.95 + 1.96 + //interface I1 extends pkg.SuperClass.pI {} 1.97 + //interface I2 extends pkg.SuperClass.spI {} 1.98 + 1.99 + } 1.100 + 1.101 + void m() { 1.102 + 1.103 + pkg.SuperClass lx = new pkg.SuperClass(); 1.104 + 1.105 + x.pi = 1; // illegal 1.106 + x.spi = 2; // illegal 1.107 + 1.108 + sx.pi = 1; // illegal 1.109 + sx.spi = 2; // illegal 1.110 + 1.111 + lx.pi = 1; // illegal 1.112 + lx.spi = 2; // illegal 1.113 + 1.114 + int t = x.pm(); // illegal 1.115 + int y = x.spm(); // illegal 1.116 + 1.117 + int u = sx.pm(); // illegal 1.118 + int v = sx.spm(); // illegal 1.119 + 1.120 + int w = lx.pm(); // illegal 1.121 + int z = lx.spm(); // illegal 1.122 + 1.123 + int i = x.pi; // illegal 1.124 + int j = x.spi; // illegal 1.125 + 1.126 + int n = sx.pi; // illegal 1.127 + int m = sx.spi; // illegal 1.128 + 1.129 + int k = lx.pi; // illegal 1.130 + int l = lx.spi; // illegal 1.131 + 1.132 + pkg.SuperClass.pC obj1; // illegal 1.133 + pkg.SuperClass.spC obj2; // illegal 1.134 + 1.135 + pkg.SuperClass.pI obj3; // illegal 1.136 + pkg.SuperClass.spI obj4; // illegal 1.137 + 1.138 + Object o1 = (pkg.SuperClass.pC) null; // illegal 1.139 + Object o2 = (pkg.SuperClass.spC) null; // illegal 1.140 + 1.141 + Object o3 = (pkg.SuperClass.pI) null; // illegal 1.142 + Object o4 = (pkg.SuperClass.spI) null; // illegal 1.143 + 1.144 + class C1 extends pkg.SuperClass.pC {} // illegal 1.145 + class C2 extends pkg.SuperClass.spC {} // illegal 1.146 + 1.147 + //interface I1 extends pkg.SuperClass.pI {} 1.148 + //interface I2 extends pkg.SuperClass.spI {} 1.149 + 1.150 + } 1.151 + 1.152 +}