test/tools/javac/QualifiedAccess/QualifiedAccess_1.java

Wed, 09 Apr 2008 11:19:15 -0700

author
xdono
date
Wed, 09 Apr 2008 11:19:15 -0700
changeset 15
18f0b1b5ffd6
parent 1
9a66ca7c79fa
child 69
82c7aa6fe50a
permissions
-rw-r--r--

Added tag jdk7-b25 for changeset 58039502942e

duke@1 1 /**
duke@1 2 * @test /nodynamiccopyright/
duke@1 3 * @bug 4094658 4277296 4785453
duke@1 4 * @summary Test enforcement of JLS 6.6.1 and 6.6.2 rules requiring that
duke@1 5 * the type to which a component member belongs be accessible in qualified
duke@1 6 * names.
duke@1 7 *
duke@1 8 * @run shell QualifiedAccess_1.sh
duke@1 9 */
duke@1 10
duke@1 11 import pack1.P1;
duke@1 12
duke@1 13 public class QualifiedAccess_1 {
duke@1 14
duke@1 15 // Inaccessible types in member declarations.
duke@1 16 // These exercise 'Env.resolve'.
duke@1 17 // Errors are localized poorly.
duke@1 18 //
duke@1 19 // Fields 'P3' and 'P5' are inaccessible.
duke@1 20
duke@1 21 P1 foo;
duke@1 22 P1.P3 bar; // ERROR
duke@1 23 P1.P3.P4 baz; // ERROR
duke@1 24 P1.P3.P4.P5 quux; // ERROR
duke@1 25
duke@1 26 P1 m11() {return null;}
duke@1 27 P1.P3 m12() {return null;} // ERROR
duke@1 28 P1.P3.P4 m13() {return null;} // ERROR
duke@1 29 P1.P3.P4.P5 m14() {return null;} // ERROR
duke@1 30
duke@1 31 void m21(P1 x) {}
duke@1 32 void m22(P1.P3 x) {} // ERROR
duke@1 33 void m23(P1.P3.P4 x) {} // ERROR
duke@1 34 void m24(P1.P3.P4.P5 x) {} // ERROR
duke@1 35
duke@1 36 void test1() {
duke@1 37
duke@1 38 // Inaccessible types in local variable declarations.
duke@1 39 // These exercise 'FieldExpression.checkCommon'.
duke@1 40 //
duke@1 41 // Fields 'P3' and 'P5' are inaccessible.
duke@1 42
duke@1 43 P1 foo = null;
duke@1 44 P1.P3 bar = null; // ERROR
duke@1 45 P1.P3.P4 baz = null; // ERROR
duke@1 46 P1.P3.P4.P5 quux = null; // ERROR
duke@1 47 }
duke@1 48
duke@1 49 void test2() {
duke@1 50
duke@1 51 // Inaccessible types in casts.
duke@1 52 // These exercise 'FieldExpression.checkCommon'.
duke@1 53 //
duke@1 54 // Fields 'P3' and 'P5' are inaccessible.
duke@1 55
duke@1 56 Object foo = (P1)null;
duke@1 57 Object bar = (P1.P3)null; // ERROR
duke@1 58 Object baz = (P1.P3.P4)null; // ERROR
duke@1 59 Object quux = (P1.P3.P4.P5)null; // ERROR
duke@1 60 }
duke@1 61
duke@1 62 void test3() {
duke@1 63
duke@1 64 // Inaccessible types in 'instanceof' expressions.
duke@1 65 // These exercise 'FieldExpression.checkCommon'.
duke@1 66 //
duke@1 67 // Fields 'P3' and 'P5' are inaccessible.
duke@1 68
duke@1 69 boolean foo = null instanceof P1;
duke@1 70 boolean bar = null instanceof P1.P3; // ERROR
duke@1 71 boolean baz = null instanceof P1.P3.P4; // ERROR
duke@1 72 boolean quux = null instanceof P1.P3.P4.P5; // ERROR
duke@1 73 }
duke@1 74
duke@1 75 }

mercurial