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