[Test] Refactor DeferredInit testData to make it more readable

Review: https://jetbrains.team/p/kt/reviews/9967

1. Fix weird indentation in ValDeferredInit*
2. Use meaningful names in ValDeferredInit*
3. Drop leading indentation in VarDeferredInit*. Not everyone has a wide
   monitor
4. Add some NOTICABLE comment that VarDeferredInit* test should be read
   as table
This commit is contained in:
Nikita Bobko
2023-05-16 17:11:47 +02:00
parent 771f82bcf6
commit 088c25ea41
5 changed files with 206 additions and 179 deletions
@@ -1,71 +1,64 @@
// FIR_IDENTICAL
// DIAGNOSTICS: -DEBUG_INFO_LEAKING_THIS
// a = final + not initialized in place + deferred init
// e = final + not initialized in place
// c = final + initialized in place
// b = open + not initialized in place + deferred init
// f = open + not initialized in place
// d = open + initialized in place
class Foo : I {
// no getter
val a0: Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val e0: Int<!>
val c0: Int = 1
override val b0: Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override val f0: Int<!>
override val d0: Int = 1
val final_notInitializedInPlace_deferredInit0: Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val final_notInitializedInPlace0: Int<!>
val final_initializedInPlace0: Int = 1
override val open_notInitializedInPlace_deferredInit0: Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override val open_notInitializedInPlace0: Int<!>
override val open_initializedInPlace0: Int = 1
// getter with field
val a1: Int; get() = field
<!MUST_BE_INITIALIZED!>val e1: Int<!>; get() = field
val c1: Int = 1; get() = field
override val b1: Int; get() = field
<!MUST_BE_INITIALIZED!>override val f1: Int<!>; get() = field
override val d1: Int = 1; get() = field
val final_notInitializedInPlace_deferredInit1: Int; get() = field
<!MUST_BE_INITIALIZED!>val final_notInitializedInPlace1: Int<!>; get() = field
val final_initializedInPlace1: Int = 1; get() = field
override val open_notInitializedInPlace_deferredinit1: Int; get() = field
<!MUST_BE_INITIALIZED!>override val open_notInitializedInPlace1: Int<!>; get() = field
override val open_initializedInPlace1: Int = 1; get() = field
// getter with empty body
val a2: Int; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val e2: Int<!>; get
val c2: Int = 1; get
override val b2: Int; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override val f2: Int<!>; get
override val d2: Int = 1; get
val final_notInitializedInPlace_deferredInit2: Int; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val final_notInitializedInPlace2: Int<!>; get
val final_initializedInPlace2: Int = 1; get
override val open_notInitializedInPlace_deferredinit2: Int; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override val open_notInitializedInPlace2: Int<!>; get
override val open_initializedInPlace2: Int = 1; get
// getter no field
val a3: Int; get() = 1
val e3: Int; get() = 1
val c3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
override val b3: Int; get() = 1
override val f3: Int; get() = 1
override val d3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
val final_notInitializedInPlace_deferredInit3: Int; get() = 1
val final_notInitializedInPlace3: Int; get() = 1
val final_initializedInPlace3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
override val open_notInitializedInPlace_deferredinit3: Int; get() = 1
override val open_notInitializedInPlace3: Int; get() = 1
override val open_initializedInPlace3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
init {
a0 = 1
a1 = 1
a2 = 1
<!VAL_REASSIGNMENT!>a3<!> = 1
final_notInitializedInPlace_deferredInit0 = 1
final_notInitializedInPlace_deferredInit1 = 1
final_notInitializedInPlace_deferredInit2 = 1
<!VAL_REASSIGNMENT!>final_notInitializedInPlace_deferredInit3<!> = 1
b0 = 1
b1 = 1
b2 = 1
<!VAL_REASSIGNMENT!>b3<!> = 1
open_notInitializedInPlace_deferredInit0 = 1
open_notInitializedInPlace_deferredinit1 = 1
open_notInitializedInPlace_deferredinit2 = 1
<!VAL_REASSIGNMENT!>open_notInitializedInPlace_deferredinit3<!> = 1
}
}
interface I {
val b0: Int
val b1: Int
val b2: Int
val b3: Int
val open_notInitializedInPlace_deferredInit0: Int
val open_notInitializedInPlace_deferredinit1: Int
val open_notInitializedInPlace_deferredinit2: Int
val open_notInitializedInPlace_deferredinit3: Int
val f0: Int
val f1: Int
val f2: Int
val f3: Int
val open_notInitializedInPlace0: Int
val open_notInitializedInPlace1: Int
val open_notInitializedInPlace2: Int
val open_notInitializedInPlace3: Int
val d0: Int
val d1: Int
val d2: Int
val d3: Int
val open_initializedInPlace0: Int
val open_initializedInPlace1: Int
val open_initializedInPlace2: Int
val open_initializedInPlace3: Int
}
@@ -1,55 +1,48 @@
// FIR_IDENTICAL
// DIAGNOSTICS: -DEBUG_INFO_LEAKING_THIS
// LANGUAGE:+ProhibitOpenValDeferredInitialization
// a = final + not initialized in place + deferred init
// e = final + not initialized in place
// c = final + initialized in place
// b = open + not initialized in place + deferred init
// f = open + not initialized in place
// d = open + initialized in place
open class Foo {
// no getter
val a0: Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val e0: Int<!>
val c0: Int = 1
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open val b0: Int<!>
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open val f0: Int<!>
open val d0: Int = 1
val final_notInitializedInPlace_deferredInit0: Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val final_notInitializedInPlace0: Int<!>
val final_initializedInPlace0: Int = 1
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open val open_notInitializedInPlace_deferredInit0: Int<!>
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open val open_notInitializedInPlace0: Int<!>
open val open_initializedInPlace0: Int = 1
// getter with field
val a1: Int; get() = field
<!MUST_BE_INITIALIZED!>val e1: Int<!>; get() = field
val c1: Int = 1; get() = field
<!MUST_BE_INITIALIZED_OR_BE_FINAL!>open val b1: Int<!>; get() = field
<!MUST_BE_INITIALIZED!>open val f1: Int<!>; get() = field
open val d1: Int = 1; get() = field
val final_notInitializedInPlace_deferredInit1: Int; get() = field
<!MUST_BE_INITIALIZED!>val final_notInitializedInPlace1: Int<!>; get() = field
val final_initializedInPlace1: Int = 1; get() = field
<!MUST_BE_INITIALIZED_OR_BE_FINAL!>open val open_notInitializedInPlace_deferredinit1: Int<!>; get() = field
<!MUST_BE_INITIALIZED!>open val open_notInitializedInPlace1: Int<!>; get() = field
open val open_initializedInPlace1: Int = 1; get() = field
// getter with empty body
val a2: Int; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val e2: Int<!>; get
val c2: Int = 1; get
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open val b2: Int<!>; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open val f2: Int<!>; get
open val d2: Int = 1; get
val final_notInitializedInPlace_deferredInit2: Int; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val final_notInitializedInPlace2: Int<!>; get
val final_initializedInPlace2: Int = 1; get
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open val open_notInitializedInPlace_deferredinit2: Int<!>; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open val open_notInitializedInPlace2: Int<!>; get
open val open_initializedInPlace2: Int = 1; get
// getter no field
val a3: Int; get() = 1
val e3: Int; get() = 1
val c3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
open val b3: Int; get() = 1
open val f3: Int; get() = 1
open val d3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
val final_notInitializedInPlace_deferredInit3: Int; get() = 1
val final_notInitializedInPlace3: Int; get() = 1
val final_initializedInPlace3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
open val open_notInitializedInPlace_deferredinit3: Int; get() = 1
open val open_notInitializedInPlace3: Int; get() = 1
open val open_initializedInPlace3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
init {
a0 = 1
a1 = 1
a2 = 1
<!VAL_REASSIGNMENT!>a3<!> = 1
final_notInitializedInPlace_deferredInit0 = 1
final_notInitializedInPlace_deferredInit1 = 1
final_notInitializedInPlace_deferredInit2 = 1
<!VAL_REASSIGNMENT!>final_notInitializedInPlace_deferredInit3<!> = 1
b0 = 1
b1 = 1
b2 = 1
<!VAL_REASSIGNMENT!>b3<!> = 1
open_notInitializedInPlace_deferredInit0 = 1
open_notInitializedInPlace_deferredinit1 = 1
open_notInitializedInPlace_deferredinit2 = 1
<!VAL_REASSIGNMENT!>open_notInitializedInPlace_deferredinit3<!> = 1
}
}
@@ -1,55 +1,48 @@
// FIR_IDENTICAL
// DIAGNOSTICS: -DEBUG_INFO_LEAKING_THIS
// LANGUAGE:-ProhibitOpenValDeferredInitialization
// a = final + not initialized in place + deferred init
// e = final + not initialized in place
// c = final + initialized in place
// b = open + not initialized in place + deferred init
// f = open + not initialized in place
// d = open + initialized in place
open class Foo {
// no getter
val a0: Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val e0: Int<!>
val c0: Int = 1
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT_WARNING!>open val b0: Int<!>
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open val f0: Int<!>
open val d0: Int = 1
val final_notInitializedInPlace_deferredInit0: Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val final_notInitializedInPlace0: Int<!>
val final_initializedInPlace0: Int = 1
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT_WARNING!>open val open_notInitializedInPlace_deferredInit0: Int<!>
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open val open_notInitializedInPlace0: Int<!>
open val open_initializedInPlace0: Int = 1
// getter with field
val a1: Int; get() = field
<!MUST_BE_INITIALIZED!>val e1: Int<!>; get() = field
val c1: Int = 1; get() = field
<!MUST_BE_INITIALIZED_OR_BE_FINAL_WARNING!>open val b1: Int<!>; get() = field
<!MUST_BE_INITIALIZED!>open val f1: Int<!>; get() = field
open val d1: Int = 1; get() = field
val final_notInitializedInPlace_deferredInit1: Int; get() = field
<!MUST_BE_INITIALIZED!>val final_notInitializedInPlace1: Int<!>; get() = field
val final_initializedInPlace1: Int = 1; get() = field
<!MUST_BE_INITIALIZED_OR_BE_FINAL_WARNING!>open val open_notInitializedInPlace_deferredinit1: Int<!>; get() = field
<!MUST_BE_INITIALIZED!>open val open_notInitializedInPlace1: Int<!>; get() = field
open val open_initializedInPlace1: Int = 1; get() = field
// getter with empty body
val a2: Int; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val e2: Int<!>; get
val c2: Int = 1; get
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT_WARNING!>open val b2: Int<!>; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open val f2: Int<!>; get
open val d2: Int = 1; get
val final_notInitializedInPlace_deferredInit2: Int; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val final_notInitializedInPlace2: Int<!>; get
val final_initializedInPlace2: Int = 1; get
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT_WARNING!>open val open_notInitializedInPlace_deferredinit2: Int<!>; get
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open val open_notInitializedInPlace2: Int<!>; get
open val open_initializedInPlace2: Int = 1; get
// getter no field
val a3: Int; get() = 1
val e3: Int; get() = 1
val c3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
open val b3: Int; get() = 1
open val f3: Int; get() = 1
open val d3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
val final_notInitializedInPlace_deferredInit3: Int; get() = 1
val final_notInitializedInPlace3: Int; get() = 1
val final_initializedInPlace3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
open val open_notInitializedInPlace_deferredinit3: Int; get() = 1
open val open_notInitializedInPlace3: Int; get() = 1
open val open_initializedInPlace3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; get() = 1
init {
a0 = 1
a1 = 1
a2 = 1
<!VAL_REASSIGNMENT!>a3<!> = 1
final_notInitializedInPlace_deferredInit0 = 1
final_notInitializedInPlace_deferredInit1 = 1
final_notInitializedInPlace_deferredInit2 = 1
<!VAL_REASSIGNMENT!>final_notInitializedInPlace_deferredInit3<!> = 1
b0 = 1
b1 = 1
b2 = 1
<!VAL_REASSIGNMENT!>b3<!> = 1
open_notInitializedInPlace_deferredInit0 = 1
open_notInitializedInPlace_deferredinit1 = 1
open_notInitializedInPlace_deferredinit2 = 1
<!VAL_REASSIGNMENT!>open_notInitializedInPlace_deferredinit3<!> = 1
}
}
@@ -1,5 +1,29 @@
// FIR_IDENTICAL
// DIAGNOSTICS: -DEBUG_INFO_LEAKING_THIS
//////////////////////////////////////////////////////////////////////////////////////////////////
/// READ THIS TEST AS A TABLE IN IDE (It may be not correctly displayed in Space or GitHub)!!! ///
//////////////////////////////////////////////////////////////////////////////////////////////////
// a = final + not initialized in place + deferred init
// e = final + not initialized in place
// c = final + initialized in place
@@ -8,35 +32,35 @@
// f = open + not initialized in place
// d = open + initialized in place
class Foo : I {
// no setter; setter with field; setter with empty body; setter no field;
// no setter; setter with field; setter with empty body; setter no field;
// no getter
var a00: Int; <!MUST_BE_INITIALIZED!>var a01: Int<!>; set(v) { field = v }; var a02: Int; set; <!MUST_BE_INITIALIZED!>var a03: Int<!>; set(v) {};
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e00: Int<!>; <!MUST_BE_INITIALIZED!>var e01: Int<!>; set(v) { field = v }; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e02: Int<!>; set; <!MUST_BE_INITIALIZED!>var e03: Int<!>; set(v) {};
var c00: Int = 1; var c01: Int = 1; set(v) { field = v }; var c02: Int = 1; set; var c03: Int = 1; set(v) {};
override var b00: Int; <!MUST_BE_INITIALIZED!>override var b01: Int<!>; set(v) { field = v }; override var b02: Int; set; <!MUST_BE_INITIALIZED!>override var b03: Int<!>; set(v) {};
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override var f00: Int<!>; <!MUST_BE_INITIALIZED!>override var f01: Int<!>; set(v) { field = v }; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override var f02: Int<!>; set; <!MUST_BE_INITIALIZED!>override var f03: Int<!>; set(v) {};
override var d00: Int = 1; override var d01: Int = 1; set(v) { field = v }; override var d02: Int = 1; set; override var d03: Int = 1; set(v) {};
var a00: Int; <!MUST_BE_INITIALIZED!>var a01: Int<!>; set(v) { field = v }; var a02: Int; set; <!MUST_BE_INITIALIZED!>var a03: Int<!>; set(v) {};
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e00: Int<!>; <!MUST_BE_INITIALIZED!>var e01: Int<!>; set(v) { field = v }; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e02: Int<!>; set; <!MUST_BE_INITIALIZED!>var e03: Int<!>; set(v) {};
var c00: Int = 1; var c01: Int = 1; set(v) { field = v }; var c02: Int = 1; set; var c03: Int = 1; set(v) {};
override var b00: Int; <!MUST_BE_INITIALIZED!>override var b01: Int<!>; set(v) { field = v }; override var b02: Int; set; <!MUST_BE_INITIALIZED!>override var b03: Int<!>; set(v) {};
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override var f00: Int<!>; <!MUST_BE_INITIALIZED!>override var f01: Int<!>; set(v) { field = v }; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override var f02: Int<!>; set; <!MUST_BE_INITIALIZED!>override var f03: Int<!>; set(v) {};
override var d00: Int = 1; override var d01: Int = 1; set(v) { field = v }; override var d02: Int = 1; set; override var d03: Int = 1; set(v) {};
// getter with field
var a10: Int; get() = field; <!MUST_BE_INITIALIZED!>var a11: Int<!>; set(v) { field = v } get() = field; var a12: Int; set get() = field; <!MUST_BE_INITIALIZED!>var a13: Int<!>; set(v) {} get() = field;
<!MUST_BE_INITIALIZED!>var e10: Int<!>; get() = field; <!MUST_BE_INITIALIZED!>var e11: Int<!>; set(v) { field = v } get() = field; <!MUST_BE_INITIALIZED!>var e12: Int<!>; set get() = field; <!MUST_BE_INITIALIZED!>var e13: Int<!>; set(v) {} get() = field;
var c10: Int = 1; get() = field; var c11: Int = 1; set(v) { field = v } get() = field; var c12: Int = 1; set get() = field; var c13: Int = 1; set(v) {} get() = field;
override var b10: Int; get() = field; <!MUST_BE_INITIALIZED!>override var b11: Int<!>; set(v) { field = v } get() = field; override var b12: Int; set get() = field; <!MUST_BE_INITIALIZED!>override var b13: Int<!>; set(v) {} get() = field;
<!MUST_BE_INITIALIZED!>override var f10: Int<!>; get() = field; <!MUST_BE_INITIALIZED!>override var f11: Int<!>; set(v) { field = v } get() = field; <!MUST_BE_INITIALIZED!>override var f12: Int<!>; set get() = field; <!MUST_BE_INITIALIZED!>override var f13: Int<!>; set(v) {} get() = field;
override var d10: Int = 1; get() = field; override var d11: Int = 1; set(v) { field = v } get() = field; override var d12: Int = 1; set get() = field; override var d13: Int = 1; set(v) {} get() = field;
var a10: Int; get() = field; <!MUST_BE_INITIALIZED!>var a11: Int<!>; set(v) { field = v } get() = field; var a12: Int; set get() = field; <!MUST_BE_INITIALIZED!>var a13: Int<!>; set(v) {} get() = field;
<!MUST_BE_INITIALIZED!>var e10: Int<!>; get() = field; <!MUST_BE_INITIALIZED!>var e11: Int<!>; set(v) { field = v } get() = field; <!MUST_BE_INITIALIZED!>var e12: Int<!>; set get() = field; <!MUST_BE_INITIALIZED!>var e13: Int<!>; set(v) {} get() = field;
var c10: Int = 1; get() = field; var c11: Int = 1; set(v) { field = v } get() = field; var c12: Int = 1; set get() = field; var c13: Int = 1; set(v) {} get() = field;
override var b10: Int; get() = field; <!MUST_BE_INITIALIZED!>override var b11: Int<!>; set(v) { field = v } get() = field; override var b12: Int; set get() = field; <!MUST_BE_INITIALIZED!>override var b13: Int<!>; set(v) {} get() = field;
<!MUST_BE_INITIALIZED!>override var f10: Int<!>; get() = field; <!MUST_BE_INITIALIZED!>override var f11: Int<!>; set(v) { field = v } get() = field; <!MUST_BE_INITIALIZED!>override var f12: Int<!>; set get() = field; <!MUST_BE_INITIALIZED!>override var f13: Int<!>; set(v) {} get() = field;
override var d10: Int = 1; get() = field; override var d11: Int = 1; set(v) { field = v } get() = field; override var d12: Int = 1; set get() = field; override var d13: Int = 1; set(v) {} get() = field;
// getter with empty body
var a20: Int; get; <!MUST_BE_INITIALIZED!>var a21: Int<!>; set(v) { field = v } get; var a22: Int; set get; <!MUST_BE_INITIALIZED!>var a23: Int<!>; set(v) {} get;
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e20: Int<!>; get; <!MUST_BE_INITIALIZED!>var e21: Int<!>; set(v) { field = v } get; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e22: Int<!>; set get; <!MUST_BE_INITIALIZED!>var e23: Int<!>; set(v) {} get;
var c20: Int = 1; get; var c21: Int = 1; set(v) { field = v } get; var c22: Int = 1; set get; var c23: Int = 1; set(v) {} get;
override var b20: Int; get; <!MUST_BE_INITIALIZED!>override var b21: Int<!>; set(v) { field = v } get; override var b22: Int; set get; <!MUST_BE_INITIALIZED!>override var b23: Int<!>; set(v) {} get;
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override var f20: Int<!>; get; <!MUST_BE_INITIALIZED!>override var f21: Int<!>; set(v) { field = v } get; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override var f22: Int<!>; set get; <!MUST_BE_INITIALIZED!>override var f23: Int<!>; set(v) {} get;
override var d20: Int = 1; get; override var d21: Int = 1; set(v) { field = v } get; override var d22: Int = 1; set get; override var d23: Int = 1; set(v) {} get;
var a20: Int; get; <!MUST_BE_INITIALIZED!>var a21: Int<!>; set(v) { field = v } get; var a22: Int; set get; <!MUST_BE_INITIALIZED!>var a23: Int<!>; set(v) {} get;
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e20: Int<!>; get; <!MUST_BE_INITIALIZED!>var e21: Int<!>; set(v) { field = v } get; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e22: Int<!>; set get; <!MUST_BE_INITIALIZED!>var e23: Int<!>; set(v) {} get;
var c20: Int = 1; get; var c21: Int = 1; set(v) { field = v } get; var c22: Int = 1; set get; var c23: Int = 1; set(v) {} get;
override var b20: Int; get; <!MUST_BE_INITIALIZED!>override var b21: Int<!>; set(v) { field = v } get; override var b22: Int; set get; <!MUST_BE_INITIALIZED!>override var b23: Int<!>; set(v) {} get;
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override var f20: Int<!>; get; <!MUST_BE_INITIALIZED!>override var f21: Int<!>; set(v) { field = v } get; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>override var f22: Int<!>; set get; <!MUST_BE_INITIALIZED!>override var f23: Int<!>; set(v) {} get;
override var d20: Int = 1; get; override var d21: Int = 1; set(v) { field = v } get; override var d22: Int = 1; set get; override var d23: Int = 1; set(v) {} get;
// getter no field
var a30: Int; get() = 1; <!MUST_BE_INITIALIZED!>var a31: Int<!>; set(v) { field = v } get() = 1; var a32: Int; set get() = 1; var a33: Int; set(v) {} get() = 1;
<!MUST_BE_INITIALIZED!>var e30: Int<!>; get() = 1; <!MUST_BE_INITIALIZED!>var e31: Int<!>; set(v) { field = v } get() = 1; <!MUST_BE_INITIALIZED!>var e32: Int<!>; set get() = 1; var e33: Int; set(v) {} get() = 1;
var c30: Int = 1; get() = 1; var c31: Int = 1; set(v) { field = v } get() = 1; var c32: Int = 1; set get() = 1; var c33: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; set(v) {} get() = 1;
override var b30: Int; get() = 1; <!MUST_BE_INITIALIZED!>override var b31: Int<!>; set(v) { field = v } get() = 1; override var b32: Int; set get() = 1; override var b33: Int; set(v) {} get() = 1;
<!MUST_BE_INITIALIZED!>override var f30: Int<!>; get() = 1; <!MUST_BE_INITIALIZED!>override var f31: Int<!>; set(v) { field = v } get() = 1; <!MUST_BE_INITIALIZED!>override var f32: Int<!>; set get() = 1; override var f33: Int; set(v) {} get() = 1;
override var d30: Int = 1; get() = 1; override var d31: Int = 1; set(v) { field = v } get() = 1; override var d32: Int = 1; set get() = 1; override var d33: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; set(v) {} get() = 1;
var a30: Int; get() = 1; <!MUST_BE_INITIALIZED!>var a31: Int<!>; set(v) { field = v } get() = 1; var a32: Int; set get() = 1; var a33: Int; set(v) {} get() = 1;
<!MUST_BE_INITIALIZED!>var e30: Int<!>; get() = 1; <!MUST_BE_INITIALIZED!>var e31: Int<!>; set(v) { field = v } get() = 1; <!MUST_BE_INITIALIZED!>var e32: Int<!>; set get() = 1; var e33: Int; set(v) {} get() = 1;
var c30: Int = 1; get() = 1; var c31: Int = 1; set(v) { field = v } get() = 1; var c32: Int = 1; set get() = 1; var c33: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; set(v) {} get() = 1;
override var b30: Int; get() = 1; <!MUST_BE_INITIALIZED!>override var b31: Int<!>; set(v) { field = v } get() = 1; override var b32: Int; set get() = 1; override var b33: Int; set(v) {} get() = 1;
<!MUST_BE_INITIALIZED!>override var f30: Int<!>; get() = 1; <!MUST_BE_INITIALIZED!>override var f31: Int<!>; set(v) { field = v } get() = 1; <!MUST_BE_INITIALIZED!>override var f32: Int<!>; set get() = 1; override var f33: Int; set(v) {} get() = 1;
override var d30: Int = 1; get() = 1; override var d31: Int = 1; set(v) { field = v } get() = 1; override var d32: Int = 1; set get() = 1; override var d33: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; set(v) {} get() = 1;
init {
a00 = 1
@@ -1,5 +1,29 @@
// FIR_IDENTICAL
// DIAGNOSTICS: -DEBUG_INFO_LEAKING_THIS
//////////////////////////////////////////////////////////////////////////////////////////////////
/// READ THIS TEST AS A TABLE IN IDE (It may be not correctly displayed in Space or GitHub)!!! ///
//////////////////////////////////////////////////////////////////////////////////////////////////
// a = final + not initialized in place + deferred init
// e = final + not initialized in place
// c = final + initialized in place
@@ -8,35 +32,35 @@
// f = open + not initialized in place
// d = open + initialized in place
open class Foo {
// no setter; setter with field; setter with empty body; setter no field;
// no setter; setter with field; setter with empty body; setter no field;
// no getter
var a00: Int; <!MUST_BE_INITIALIZED!>var a01: Int<!>; set(v) { field = v }; var a02: Int; set; <!MUST_BE_INITIALIZED!>var a03: Int<!>; set(v) {};
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e00: Int<!>; <!MUST_BE_INITIALIZED!>var e01: Int<!>; set(v) { field = v }; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e02: Int<!>; set; <!MUST_BE_INITIALIZED!>var e03: Int<!>; set(v) {};
var c00: Int = 1; var c01: Int = 1; set(v) { field = v }; var c02: Int = 1; set; var c03: Int = 1; set(v) {};
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open var b00: Int<!>; <!MUST_BE_INITIALIZED!>open var b01: Int<!>; set(v) { field = v }; <!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open var b02: Int<!>; set; <!MUST_BE_INITIALIZED!>open var b03: Int<!>; set(v) {};
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open var f00: Int<!>; <!MUST_BE_INITIALIZED!>open var f01: Int<!>; set(v) { field = v }; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open var f02: Int<!>; set; <!MUST_BE_INITIALIZED!>open var f03: Int<!>; set(v) {};
open var d00: Int = 1; open var d01: Int = 1; set(v) { field = v }; open var d02: Int = 1; set; open var d03: Int = 1; set(v) {};
var a00: Int; <!MUST_BE_INITIALIZED!>var a01: Int<!>; set(v) { field = v }; var a02: Int; set; <!MUST_BE_INITIALIZED!>var a03: Int<!>; set(v) {};
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e00: Int<!>; <!MUST_BE_INITIALIZED!>var e01: Int<!>; set(v) { field = v }; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e02: Int<!>; set; <!MUST_BE_INITIALIZED!>var e03: Int<!>; set(v) {};
var c00: Int = 1; var c01: Int = 1; set(v) { field = v }; var c02: Int = 1; set; var c03: Int = 1; set(v) {};
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open var b00: Int<!>; <!MUST_BE_INITIALIZED!>open var b01: Int<!>; set(v) { field = v }; <!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open var b02: Int<!>; set; <!MUST_BE_INITIALIZED!>open var b03: Int<!>; set(v) {};
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open var f00: Int<!>; <!MUST_BE_INITIALIZED!>open var f01: Int<!>; set(v) { field = v }; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open var f02: Int<!>; set; <!MUST_BE_INITIALIZED!>open var f03: Int<!>; set(v) {};
open var d00: Int = 1; open var d01: Int = 1; set(v) { field = v }; open var d02: Int = 1; set; open var d03: Int = 1; set(v) {};
// getter with field
var a10: Int; get() = field; <!MUST_BE_INITIALIZED!>var a11: Int<!>; set(v) { field = v } get() = field; var a12: Int; set get() = field; <!MUST_BE_INITIALIZED!>var a13: Int<!>; set(v) {} get() = field;
<!MUST_BE_INITIALIZED!>var e10: Int<!>; get() = field; <!MUST_BE_INITIALIZED!>var e11: Int<!>; set(v) { field = v } get() = field; <!MUST_BE_INITIALIZED!>var e12: Int<!>; set get() = field; <!MUST_BE_INITIALIZED!>var e13: Int<!>; set(v) {} get() = field;
var c10: Int = 1; get() = field; var c11: Int = 1; set(v) { field = v } get() = field; var c12: Int = 1; set get() = field; var c13: Int = 1; set(v) {} get() = field;
<!MUST_BE_INITIALIZED_OR_BE_FINAL!>open var b10: Int<!>; get() = field; <!MUST_BE_INITIALIZED!>open var b11: Int<!>; set(v) { field = v } get() = field; <!MUST_BE_INITIALIZED_OR_BE_FINAL!>open var b12: Int<!>; set get() = field; <!MUST_BE_INITIALIZED!>open var b13: Int<!>; set(v) {} get() = field;
<!MUST_BE_INITIALIZED!>open var f10: Int<!>; get() = field; <!MUST_BE_INITIALIZED!>open var f11: Int<!>; set(v) { field = v } get() = field; <!MUST_BE_INITIALIZED!>open var f12: Int<!>; set get() = field; <!MUST_BE_INITIALIZED!>open var f13: Int<!>; set(v) {} get() = field;
open var d10: Int = 1; get() = field; open var d11: Int = 1; set(v) { field = v } get() = field; open var d12: Int = 1; set get() = field; open var d13: Int = 1; set(v) {} get() = field;
var a10: Int; get() = field; <!MUST_BE_INITIALIZED!>var a11: Int<!>; set(v) { field = v } get() = field; var a12: Int; set get() = field; <!MUST_BE_INITIALIZED!>var a13: Int<!>; set(v) {} get() = field;
<!MUST_BE_INITIALIZED!>var e10: Int<!>; get() = field; <!MUST_BE_INITIALIZED!>var e11: Int<!>; set(v) { field = v } get() = field; <!MUST_BE_INITIALIZED!>var e12: Int<!>; set get() = field; <!MUST_BE_INITIALIZED!>var e13: Int<!>; set(v) {} get() = field;
var c10: Int = 1; get() = field; var c11: Int = 1; set(v) { field = v } get() = field; var c12: Int = 1; set get() = field; var c13: Int = 1; set(v) {} get() = field;
<!MUST_BE_INITIALIZED_OR_BE_FINAL!>open var b10: Int<!>; get() = field; <!MUST_BE_INITIALIZED!>open var b11: Int<!>; set(v) { field = v } get() = field; <!MUST_BE_INITIALIZED_OR_BE_FINAL!>open var b12: Int<!>; set get() = field; <!MUST_BE_INITIALIZED!>open var b13: Int<!>; set(v) {} get() = field;
<!MUST_BE_INITIALIZED!>open var f10: Int<!>; get() = field; <!MUST_BE_INITIALIZED!>open var f11: Int<!>; set(v) { field = v } get() = field; <!MUST_BE_INITIALIZED!>open var f12: Int<!>; set get() = field; <!MUST_BE_INITIALIZED!>open var f13: Int<!>; set(v) {} get() = field;
open var d10: Int = 1; get() = field; open var d11: Int = 1; set(v) { field = v } get() = field; open var d12: Int = 1; set get() = field; open var d13: Int = 1; set(v) {} get() = field;
// getter with empty body
var a20: Int; get; <!MUST_BE_INITIALIZED!>var a21: Int<!>; set(v) { field = v } get; var a22: Int; set get; <!MUST_BE_INITIALIZED!>var a23: Int<!>; set(v) {} get;
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e20: Int<!>; get; <!MUST_BE_INITIALIZED!>var e21: Int<!>; set(v) { field = v } get; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e22: Int<!>; set get; <!MUST_BE_INITIALIZED!>var e23: Int<!>; set(v) {} get;
var c20: Int = 1; get; var c21: Int = 1; set(v) { field = v } get; var c22: Int = 1; set get; var c23: Int = 1; set(v) {} get;
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open var b20: Int<!>; get; <!MUST_BE_INITIALIZED!>open var b21: Int<!>; set(v) { field = v } get; <!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open var b22: Int<!>; set get; <!MUST_BE_INITIALIZED!>open var b23: Int<!>; set(v) {} get;
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open var f20: Int<!>; get; <!MUST_BE_INITIALIZED!>open var f21: Int<!>; set(v) { field = v } get; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open var f22: Int<!>; set get; <!MUST_BE_INITIALIZED!>open var f23: Int<!>; set(v) {} get;
open var d20: Int = 1; get; open var d21: Int = 1; set(v) { field = v } get; open var d22: Int = 1; set get; open var d23: Int = 1; set(v) {} get;
var a20: Int; get; <!MUST_BE_INITIALIZED!>var a21: Int<!>; set(v) { field = v } get; var a22: Int; set get; <!MUST_BE_INITIALIZED!>var a23: Int<!>; set(v) {} get;
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e20: Int<!>; get; <!MUST_BE_INITIALIZED!>var e21: Int<!>; set(v) { field = v } get; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var e22: Int<!>; set get; <!MUST_BE_INITIALIZED!>var e23: Int<!>; set(v) {} get;
var c20: Int = 1; get; var c21: Int = 1; set(v) { field = v } get; var c22: Int = 1; set get; var c23: Int = 1; set(v) {} get;
<!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open var b20: Int<!>; get; <!MUST_BE_INITIALIZED!>open var b21: Int<!>; set(v) { field = v } get; <!MUST_BE_INITIALIZED_OR_FINAL_OR_ABSTRACT!>open var b22: Int<!>; set get; <!MUST_BE_INITIALIZED!>open var b23: Int<!>; set(v) {} get;
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open var f20: Int<!>; get; <!MUST_BE_INITIALIZED!>open var f21: Int<!>; set(v) { field = v } get; <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>open var f22: Int<!>; set get; <!MUST_BE_INITIALIZED!>open var f23: Int<!>; set(v) {} get;
open var d20: Int = 1; get; open var d21: Int = 1; set(v) { field = v } get; open var d22: Int = 1; set get; open var d23: Int = 1; set(v) {} get;
// getter no field
var a30: Int; get() = 1; <!MUST_BE_INITIALIZED!>var a31: Int<!>; set(v) { field = v } get() = 1; var a32: Int; set get() = 1; var a33: Int; set(v) {} get() = 1;
<!MUST_BE_INITIALIZED!>var e30: Int<!>; get() = 1; <!MUST_BE_INITIALIZED!>var e31: Int<!>; set(v) { field = v } get() = 1; <!MUST_BE_INITIALIZED!>var e32: Int<!>; set get() = 1; var e33: Int; set(v) {} get() = 1;
var c30: Int = 1; get() = 1; var c31: Int = 1; set(v) { field = v } get() = 1; var c32: Int = 1; set get() = 1; var c33: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; set(v) {} get() = 1;
<!MUST_BE_INITIALIZED_OR_BE_FINAL!>open var b30: Int<!>; get() = 1; <!MUST_BE_INITIALIZED!>open var b31: Int<!>; set(v) { field = v } get() = 1; <!MUST_BE_INITIALIZED_OR_BE_FINAL!>open var b32: Int<!>; set get() = 1; open var b33: Int; set(v) {} get() = 1;
<!MUST_BE_INITIALIZED!>open var f30: Int<!>; get() = 1; <!MUST_BE_INITIALIZED!>open var f31: Int<!>; set(v) { field = v } get() = 1; <!MUST_BE_INITIALIZED!>open var f32: Int<!>; set get() = 1; open var f33: Int; set(v) {} get() = 1;
open var d30: Int = 1; get() = 1; open var d31: Int = 1; set(v) { field = v } get() = 1; open var d32: Int = 1; set get() = 1; open var d33: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; set(v) {} get() = 1;
var a30: Int; get() = 1; <!MUST_BE_INITIALIZED!>var a31: Int<!>; set(v) { field = v } get() = 1; var a32: Int; set get() = 1; var a33: Int; set(v) {} get() = 1;
<!MUST_BE_INITIALIZED!>var e30: Int<!>; get() = 1; <!MUST_BE_INITIALIZED!>var e31: Int<!>; set(v) { field = v } get() = 1; <!MUST_BE_INITIALIZED!>var e32: Int<!>; set get() = 1; var e33: Int; set(v) {} get() = 1;
var c30: Int = 1; get() = 1; var c31: Int = 1; set(v) { field = v } get() = 1; var c32: Int = 1; set get() = 1; var c33: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; set(v) {} get() = 1;
<!MUST_BE_INITIALIZED_OR_BE_FINAL!>open var b30: Int<!>; get() = 1; <!MUST_BE_INITIALIZED!>open var b31: Int<!>; set(v) { field = v } get() = 1; <!MUST_BE_INITIALIZED_OR_BE_FINAL!>open var b32: Int<!>; set get() = 1; open var b33: Int; set(v) {} get() = 1;
<!MUST_BE_INITIALIZED!>open var f30: Int<!>; get() = 1; <!MUST_BE_INITIALIZED!>open var f31: Int<!>; set(v) { field = v } get() = 1; <!MUST_BE_INITIALIZED!>open var f32: Int<!>; set get() = 1; open var f33: Int; set(v) {} get() = 1;
open var d30: Int = 1; get() = 1; open var d31: Int = 1; set(v) { field = v } get() = 1; open var d32: Int = 1; set get() = 1; open var d33: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1<!>; set(v) {} get() = 1;
init {
a00 = 1