author | robm |
Tue, 13 Sep 2016 14:47:29 +0100 | |
changeset 40938 | 5b0977acc842 |
parent 6150 | d055fa8ced62 |
permissions | -rw-r--r-- |
10 | 1 |
/** |
2 |
* @test /nodynamiccopyright/ |
|
3 |
* @bug 4094658 4277296 4785453 |
|
4 |
* @summary Test enforcement of JLS 6.6.1 and 6.6.2 rules requiring that |
|
5 |
* the type to which a component member belongs be accessible in qualified |
|
6 |
* names. |
|
7 |
* |
|
863
3113c955a388
6724327: eliminate use of shell tests for simple golden file tests
jjg
parents:
10
diff
changeset
|
8 |
* @compile pack1/P1.java |
3113c955a388
6724327: eliminate use of shell tests for simple golden file tests
jjg
parents:
10
diff
changeset
|
9 |
* @compile pack1/P2.java |
6150 | 10 |
* @compile/fail/ref=QualifiedAccess_1.out -XDrawDiagnostics QualifiedAccess_1.java |
10 | 11 |
*/ |
12 |
||
13 |
import pack1.P1; |
|
14 |
||
15 |
public class QualifiedAccess_1 { |
|
16 |
||
17 |
// Inaccessible types in member declarations. |
|
18 |
// These exercise 'Env.resolve'. |
|
19 |
// Errors are localized poorly. |
|
20 |
// |
|
21 |
// Fields 'P3' and 'P5' are inaccessible. |
|
22 |
||
23 |
P1 foo; |
|
24 |
P1.P3 bar; // ERROR |
|
25 |
P1.P3.P4 baz; // ERROR |
|
26 |
P1.P3.P4.P5 quux; // ERROR |
|
27 |
||
28 |
P1 m11() {return null;} |
|
29 |
P1.P3 m12() {return null;} // ERROR |
|
30 |
P1.P3.P4 m13() {return null;} // ERROR |
|
31 |
P1.P3.P4.P5 m14() {return null;} // ERROR |
|
32 |
||
33 |
void m21(P1 x) {} |
|
34 |
void m22(P1.P3 x) {} // ERROR |
|
35 |
void m23(P1.P3.P4 x) {} // ERROR |
|
36 |
void m24(P1.P3.P4.P5 x) {} // ERROR |
|
37 |
||
38 |
void test1() { |
|
39 |
||
40 |
// Inaccessible types in local variable declarations. |
|
41 |
// These exercise 'FieldExpression.checkCommon'. |
|
42 |
// |
|
43 |
// Fields 'P3' and 'P5' are inaccessible. |
|
44 |
||
45 |
P1 foo = null; |
|
46 |
P1.P3 bar = null; // ERROR |
|
47 |
P1.P3.P4 baz = null; // ERROR |
|
48 |
P1.P3.P4.P5 quux = null; // ERROR |
|
49 |
} |
|
50 |
||
51 |
void test2() { |
|
52 |
||
53 |
// Inaccessible types in casts. |
|
54 |
// These exercise 'FieldExpression.checkCommon'. |
|
55 |
// |
|
56 |
// Fields 'P3' and 'P5' are inaccessible. |
|
57 |
||
58 |
Object foo = (P1)null; |
|
59 |
Object bar = (P1.P3)null; // ERROR |
|
60 |
Object baz = (P1.P3.P4)null; // ERROR |
|
61 |
Object quux = (P1.P3.P4.P5)null; // ERROR |
|
62 |
} |
|
63 |
||
64 |
void test3() { |
|
65 |
||
66 |
// Inaccessible types in 'instanceof' expressions. |
|
67 |
// These exercise 'FieldExpression.checkCommon'. |
|
68 |
// |
|
69 |
// Fields 'P3' and 'P5' are inaccessible. |
|
70 |
||
71 |
boolean foo = null instanceof P1; |
|
72 |
boolean bar = null instanceof P1.P3; // ERROR |
|
73 |
boolean baz = null instanceof P1.P3.P4; // ERROR |
|
74 |
boolean quux = null instanceof P1.P3.P4.P5; // ERROR |
|
75 |
} |
|
76 |
||
77 |
} |