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 } --- EOF ---