diff -r 000000000000 -r 959103a6100f test/tools/javac/QualifiedAccess/QualifiedAccess_3.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/QualifiedAccess/QualifiedAccess_3.java Wed Apr 27 01:34:52 2016 +0800 @@ -0,0 +1,47 @@ +/** + * @test /nodynamiccopyright/ + * @bug 4094658 4785453 + * @summary Test enforcement of JLS 6.6.1 and 6.6.2 rules requiring that + * the type to which a component member belongs be accessible in qualified + * names. + * + * @compile/fail/ref=QualifiedAccess_3.out -XDrawDiagnostics QualifiedAccess_3.java + */ + +import pack1.P1; + +class CMain { + + class Foo { + class Bar {} + } + + static class Baz { + private static class Quux { + static class Quem {} + } + } + + // These are all OK. + CMain z = new CMain(); + Foo x = z.new Foo(); + Foo.Bar y = x.new Bar(); + + void test() { + P1 p1 = new P1(); + + // These are NOT errors, and should NOT be detected, as observed. + /*------------------------------------* + Baz.Quux z = null; + Baz.Quux.Quem y = null; + *------------------------------------*/ + + P1.Foo.Bar x = null; // ERROR - 'P1.Foo' not accessible + int i = p1.a.length; // ERROR - Type of 'a' not accessible + // The type of the expression from which a component + // is selected must be accessible. + p1.p2.privatei = 3; // ERROR - Type of 'p1.p2' not accessible. + System.out.println (p1.p2.privatei); // ERROR - Type of 'p1.p2' not accessible. + } + +}