[FE] Prohibit open val deferred initialization

^KT-57553 Fixed
Review: https://jetbrains.team/p/kt/reviews/9967

Other related tests:
- testUninitializedOrReassignedVariables
- testUseOfPropertiesWithoutPrimary
- @TestMetadata("compiler/testData/diagnostics/tests/secondaryConstructors")
- testAugmentedAssignmentInInitializer
- testInitOpenSetter
- testInitOverrideInConstructorComplex
- testPropertyInitializationOrder
This commit is contained in:
Nikita Bobko
2023-05-01 15:18:51 +02:00
parent 38319c55a8
commit ac40010501
27 changed files with 399 additions and 151 deletions
@@ -9,28 +9,28 @@
// 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 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
// 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 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
// 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 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
// getter no field
val a3: Int; get() = 1