1 /*
2 * @test /nodynamiccopyright/
3 * @bug 8324873 8325805
4 * @summary Permit non-superclass instance field assignments before this/super in constructors
5 * @compile/fail/ref=DA_DUConstructors.out -XDrawDiagnostics DA_DUConstructors.java
6 */
7
8 public class DA_DUConstructors {
9 // identity
10 class C1 {
11 final int x;
12 final int y = x + 1;
13 C1() {
14 x = 12;
15 super();
16 }
17 }
18
19 class C2_Base {
20 C2_Base(int i) {}
21 }
22 class C2 extends C2_Base {
23 final int x;
24 C2() {
25 super(x = 3); // error
26 x = 4;
27 }
28 }
29
30 class C3 {
31 C3(int i) {}
32 }
33 class C4 extends C3 {
34 final int x;
35 C4() {
36 super(x = 3); // ok
37 }
38 }
39
40 class C5 {
41 final int x;
42 final int y = x + 1; // x is not DA
43 C5() {
44 x = 12; super();
45 }
46 C5(int i) {
47 /* no prologue */
48 x = i;
49 }
50 }
51 }