duke@1: /** duke@1: * @test /nodynamiccopyright/ duke@1: * @bug 4094658 4277296 4785453 duke@1: * @summary Test enforcement of JLS 6.6.1 and 6.6.2 rules requiring that duke@1: * the type to which a component member belongs be accessible in qualified duke@1: * names. duke@1: * jjg@69: * @compile pack1/P1.java jjg@69: * @compile pack1/P2.java jjg@611: * @compile/fail/ref=QualifiedAccess_1.out -XDrawDiagnostics QualifiedAccess_1.java duke@1: */ duke@1: duke@1: import pack1.P1; duke@1: duke@1: public class QualifiedAccess_1 { duke@1: duke@1: // Inaccessible types in member declarations. duke@1: // These exercise 'Env.resolve'. duke@1: // Errors are localized poorly. duke@1: // duke@1: // Fields 'P3' and 'P5' are inaccessible. duke@1: duke@1: P1 foo; duke@1: P1.P3 bar; // ERROR duke@1: P1.P3.P4 baz; // ERROR duke@1: P1.P3.P4.P5 quux; // ERROR duke@1: duke@1: P1 m11() {return null;} duke@1: P1.P3 m12() {return null;} // ERROR duke@1: P1.P3.P4 m13() {return null;} // ERROR duke@1: P1.P3.P4.P5 m14() {return null;} // ERROR duke@1: duke@1: void m21(P1 x) {} duke@1: void m22(P1.P3 x) {} // ERROR duke@1: void m23(P1.P3.P4 x) {} // ERROR duke@1: void m24(P1.P3.P4.P5 x) {} // ERROR duke@1: duke@1: void test1() { duke@1: duke@1: // Inaccessible types in local variable declarations. duke@1: // These exercise 'FieldExpression.checkCommon'. duke@1: // duke@1: // Fields 'P3' and 'P5' are inaccessible. duke@1: duke@1: P1 foo = null; duke@1: P1.P3 bar = null; // ERROR duke@1: P1.P3.P4 baz = null; // ERROR duke@1: P1.P3.P4.P5 quux = null; // ERROR duke@1: } duke@1: duke@1: void test2() { duke@1: duke@1: // Inaccessible types in casts. duke@1: // These exercise 'FieldExpression.checkCommon'. duke@1: // duke@1: // Fields 'P3' and 'P5' are inaccessible. duke@1: duke@1: Object foo = (P1)null; duke@1: Object bar = (P1.P3)null; // ERROR duke@1: Object baz = (P1.P3.P4)null; // ERROR duke@1: Object quux = (P1.P3.P4.P5)null; // ERROR duke@1: } duke@1: duke@1: void test3() { duke@1: duke@1: // Inaccessible types in 'instanceof' expressions. duke@1: // These exercise 'FieldExpression.checkCommon'. duke@1: // duke@1: // Fields 'P3' and 'P5' are inaccessible. duke@1: duke@1: boolean foo = null instanceof P1; duke@1: boolean bar = null instanceof P1.P3; // ERROR duke@1: boolean baz = null instanceof P1.P3.P4; // ERROR duke@1: boolean quux = null instanceof P1.P3.P4.P5; // ERROR duke@1: } duke@1: duke@1: }