[FIR] Report PROPERTY_WITH_NO_TYPE_NO_INITIALIZER for all properties

Currently, PROPERTY_WITH_NO_TYPE_NO_INITIALIZER is reported for local
variables, but not reported for member or top-level properties. Add a
check to the common `checkPropertyInitializer` for when a property
type cannot be determined from the getter.

This also corrects a K1 versus K2 inconsistency, where K2 would allow
blocks from getters to determine property type instead of only allowing
expression bodies.

^KT-59935 Fixed
^KT-60117 Fixed
^KT-60123 Fixed
This commit is contained in:
Brian Norman
2023-10-23 14:32:26 -05:00
committed by Space Team
parent b154283149
commit 01a757cbd6
16 changed files with 52 additions and 31 deletions
@@ -1,6 +1,6 @@
FILE: untypedPropertyWithBackingFieldUsage.kt
public final val simpleNoTypeBlock: <ERROR TYPE REF: Unresolved name: field>
public get(): <ERROR TYPE REF: Unresolved name: field> {
public final val simpleNoTypeBlock: <ERROR TYPE REF: Cannot infer variable type without initializer / getter / delegate>
public get(): <ERROR TYPE REF: Cannot infer variable type without initializer / getter / delegate> {
^ <Unresolved name: field>#
}
public final val simpleNoTypeExpression: <ERROR TYPE REF: Unresolved name: field>
@@ -15,9 +15,9 @@ FILE: untypedPropertyWithBackingFieldUsage.kt
public get(): R|kotlin/Int| {
^ F|/simpleTypeExpression|
}
public final val withFieldNoTypeBlock: R|kotlin/Int|
public final val withFieldNoTypeBlock: <ERROR TYPE REF: Cannot infer variable type without initializer / getter / delegate>
private <explicit backing field>: R|kotlin/Double| = Double(3.14)
public get(): R|kotlin/Int| {
public get(): <ERROR TYPE REF: Cannot infer variable type without initializer / getter / delegate> {
^ <Unresolved name: field>#.R|kotlin/text/toInt|()
}
public final val withFieldNoTypeExpression: R|kotlin/Int|
@@ -1,4 +1,4 @@
val simpleNoTypeBlock
<!PROPERTY_WITH_NO_TYPE_NO_INITIALIZER!>val simpleNoTypeBlock<!>
get() {
return <!UNRESOLVED_REFERENCE!>field<!>
}