3789983e89
Reviewed-by: darcy, ihse
78 lines
2.4 KiB
Java
78 lines
2.4 KiB
Java
/**
|
|
* @test /nodynamiccopyright/
|
|
* @bug 4094658 4277296 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 pack1/P1.java
|
|
* @compile pack1/P2.java
|
|
* @compile/fail/ref=QualifiedAccess_1.out -XDrawDiagnostics QualifiedAccess_1.java
|
|
*/
|
|
|
|
import pack1.P1;
|
|
|
|
public class QualifiedAccess_1 {
|
|
|
|
// Inaccessible types in member declarations.
|
|
// These exercise 'Env.resolve'.
|
|
// Errors are localized poorly.
|
|
//
|
|
// Fields 'P3' and 'P5' are inaccessible.
|
|
|
|
P1 foo;
|
|
P1.P3 bar; // ERROR
|
|
P1.P3.P4 baz; // ERROR
|
|
P1.P3.P4.P5 quux; // ERROR
|
|
|
|
P1 m11() {return null;}
|
|
P1.P3 m12() {return null;} // ERROR
|
|
P1.P3.P4 m13() {return null;} // ERROR
|
|
P1.P3.P4.P5 m14() {return null;} // ERROR
|
|
|
|
void m21(P1 x) {}
|
|
void m22(P1.P3 x) {} // ERROR
|
|
void m23(P1.P3.P4 x) {} // ERROR
|
|
void m24(P1.P3.P4.P5 x) {} // ERROR
|
|
|
|
void test1() {
|
|
|
|
// Inaccessible types in local variable declarations.
|
|
// These exercise 'FieldExpression.checkCommon'.
|
|
//
|
|
// Fields 'P3' and 'P5' are inaccessible.
|
|
|
|
P1 foo = null;
|
|
P1.P3 bar = null; // ERROR
|
|
P1.P3.P4 baz = null; // ERROR
|
|
P1.P3.P4.P5 quux = null; // ERROR
|
|
}
|
|
|
|
void test2() {
|
|
|
|
// Inaccessible types in casts.
|
|
// These exercise 'FieldExpression.checkCommon'.
|
|
//
|
|
// Fields 'P3' and 'P5' are inaccessible.
|
|
|
|
Object foo = (P1)null;
|
|
Object bar = (P1.P3)null; // ERROR
|
|
Object baz = (P1.P3.P4)null; // ERROR
|
|
Object quux = (P1.P3.P4.P5)null; // ERROR
|
|
}
|
|
|
|
void test3() {
|
|
|
|
// Inaccessible types in 'instanceof' expressions.
|
|
// These exercise 'FieldExpression.checkCommon'.
|
|
//
|
|
// Fields 'P3' and 'P5' are inaccessible.
|
|
|
|
boolean foo = null instanceof P1;
|
|
boolean bar = null instanceof P1.P3; // ERROR
|
|
boolean baz = null instanceof P1.P3.P4; // ERROR
|
|
boolean quux = null instanceof P1.P3.P4.P5; // ERROR
|
|
}
|
|
|
|
}
|