duke@1: /* duke@1: * @test /nodynamiccopyright/ duke@1: * @bug 4319507 4785453 duke@1: * @summary Verify correct implementation of JLS2e 6.6.2.1 duke@1: * @author maddox duke@1: * mcimadamore@288: * @compile/fail/ref=ProtectedMemberAccess2.out -XDstdout -XDdiags=-simpleNames -XDdiagsFormat=%b:%l:%_%m ProtectedMemberAccess2.java duke@1: */ duke@1: duke@1: // 71 errors expected. duke@1: duke@1: import pkg.SuperClass; duke@1: duke@1: class ProtectedMemberAccess2 { duke@1: duke@1: // Since this class is not a subclass of the class in which the duke@1: // protected members are declared, all of the accesses are illegal. duke@1: duke@1: pkg.SuperClass x = new pkg.SuperClass(); duke@1: duke@1: static pkg.SuperClass sx = new pkg.SuperClass(); duke@1: duke@1: int i = x.pi; // illegal duke@1: int j = x.spi; // illegal duke@1: duke@1: int n = sx.pi; // illegal duke@1: int m = sx.spi; // illegal duke@1: duke@1: static int sn = sx.pi; // illegal duke@1: static int sm = sx.spi; // illegal duke@1: duke@1: int w = x.pm(); // illegal duke@1: int y = x.spm(); // illegal duke@1: duke@1: int u = sx.pm(); // illegal duke@1: int v = sx.spm(); // illegal duke@1: duke@1: pkg.SuperClass.pC obj1; // illegal duke@1: pkg.SuperClass.spC obj2; // illegal duke@1: duke@1: pkg.SuperClass.pI obj3; // illegal duke@1: pkg.SuperClass.spI obj4; // illegal duke@1: duke@1: Object o1 = (pkg.SuperClass.pC) null; // illegal duke@1: Object o2 = (pkg.SuperClass.spC) null; // illegal duke@1: duke@1: Object o3 = (pkg.SuperClass.pI) null; // illegal duke@1: Object o4 = (pkg.SuperClass.spI) null; // illegal duke@1: duke@1: class C1 extends pkg.SuperClass.pC {} // illegal duke@1: class C2 extends pkg.SuperClass.spC {} // illegal duke@1: duke@1: interface I1 extends pkg.SuperClass.pI {} // illegal duke@1: interface I2 extends pkg.SuperClass.spI {} // illegal duke@1: duke@1: static { duke@1: duke@1: pkg.SuperClass lx = new pkg.SuperClass(); duke@1: duke@1: sx.pi = 1; // illegal duke@1: sx.spi = 2; // illegal duke@1: duke@1: lx.pi = 1; // illegal duke@1: lx.spi = 2; // illegal duke@1: duke@1: int n = sx.pi; // illegal duke@1: int m = sx.spi; // illegal duke@1: duke@1: int k = lx.pi; // illegal duke@1: int l = lx.spi; // illegal duke@1: duke@1: int u = sx.pm(); // illegal duke@1: int v = sx.spm(); // illegal duke@1: duke@1: int w = lx.pm(); // illegal duke@1: int z = lx.spm(); // illegal duke@1: duke@1: pkg.SuperClass.pC obj1; // illegal duke@1: pkg.SuperClass.spC obj2; // illegal duke@1: duke@1: pkg.SuperClass.pI obj3; // illegal duke@1: pkg.SuperClass.spI obj4; // illegal duke@1: duke@1: Object o1 = (pkg.SuperClass.pC) null; // illegal duke@1: Object o2 = (pkg.SuperClass.spC) null; // illegal duke@1: duke@1: Object o3 = (pkg.SuperClass.pI) null; // illegal duke@1: Object o4 = (pkg.SuperClass.spI) null; // illegal duke@1: duke@1: //class C1 extends pkg.SuperClass.pC {} duke@1: class C2 extends pkg.SuperClass.spC {} // illegal duke@1: duke@1: //interface I1 extends pkg.SuperClass.pI {} duke@1: //interface I2 extends pkg.SuperClass.spI {} duke@1: duke@1: } duke@1: duke@1: void m() { duke@1: duke@1: pkg.SuperClass lx = new pkg.SuperClass(); duke@1: duke@1: x.pi = 1; // illegal duke@1: x.spi = 2; // illegal duke@1: duke@1: sx.pi = 1; // illegal duke@1: sx.spi = 2; // illegal duke@1: duke@1: lx.pi = 1; // illegal duke@1: lx.spi = 2; // illegal duke@1: duke@1: int t = x.pm(); // illegal duke@1: int y = x.spm(); // illegal duke@1: duke@1: int u = sx.pm(); // illegal duke@1: int v = sx.spm(); // illegal duke@1: duke@1: int w = lx.pm(); // illegal duke@1: int z = lx.spm(); // illegal duke@1: duke@1: int i = x.pi; // illegal duke@1: int j = x.spi; // illegal duke@1: duke@1: int n = sx.pi; // illegal duke@1: int m = sx.spi; // illegal duke@1: duke@1: int k = lx.pi; // illegal duke@1: int l = lx.spi; // illegal duke@1: duke@1: pkg.SuperClass.pC obj1; // illegal duke@1: pkg.SuperClass.spC obj2; // illegal duke@1: duke@1: pkg.SuperClass.pI obj3; // illegal duke@1: pkg.SuperClass.spI obj4; // illegal duke@1: duke@1: Object o1 = (pkg.SuperClass.pC) null; // illegal duke@1: Object o2 = (pkg.SuperClass.spC) null; // illegal duke@1: duke@1: Object o3 = (pkg.SuperClass.pI) null; // illegal duke@1: Object o4 = (pkg.SuperClass.spI) null; // illegal duke@1: duke@1: class C1 extends pkg.SuperClass.pC {} // illegal duke@1: class C2 extends pkg.SuperClass.spC {} // illegal duke@1: duke@1: //interface I1 extends pkg.SuperClass.pI {} duke@1: //interface I2 extends pkg.SuperClass.spI {} duke@1: duke@1: } duke@1: duke@1: }