[FIR] FirVariable: add replace method for delegate

It is required to properly implement lazy expression calculation

^KT-59687
This commit is contained in:
Dmitrii Gridin
2023-07-01 17:46:35 +02:00
committed by Space Team
parent 4f859a634e
commit f8b2b4ac21
18 changed files with 42 additions and 1 deletions
@@ -142,6 +142,7 @@ class FirJavaField @FirImplementationDetail constructor(
return this
}
override fun replaceDelegate(newDelegate: FirExpression?) {}
override val delegate: FirExpression?
get() = null
@@ -178,6 +178,8 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
override fun replaceInitializer(newInitializer: FirExpression?) {
}
override fun replaceDelegate(newDelegate: FirExpression?) {}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
}
@@ -64,6 +64,8 @@ abstract class FirBackingField : FirVariable(), FirTypeParametersOwner, FirState
abstract override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: FirPropertyAccessor?)
@@ -65,6 +65,8 @@ abstract class FirEnumEntry : FirVariable() {
abstract override fun replaceInitializer(newInitializer: FirExpression?)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: FirPropertyAccessor?)
@@ -68,6 +68,8 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder {
abstract override fun replaceInitializer(newInitializer: FirExpression?)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: FirPropertyAccessor?)
@@ -67,6 +67,8 @@ abstract class FirField : FirVariable(), FirControlFlowGraphOwner {
abstract override fun replaceInitializer(newInitializer: FirExpression?)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: FirPropertyAccessor?)
@@ -69,6 +69,8 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFl
abstract override fun replaceInitializer(newInitializer: FirExpression?)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: FirPropertyAccessor?)
@@ -73,6 +73,8 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner {
abstract override fun replaceInitializer(newInitializer: FirExpression?)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: FirPropertyAccessor?)
@@ -66,6 +66,8 @@ sealed class FirVariable : FirCallableDeclaration(), FirStatement {
abstract fun replaceInitializer(newInitializer: FirExpression?)
abstract fun replaceDelegate(newDelegate: FirExpression?)
abstract fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract fun replaceSetter(newSetter: FirPropertyAccessor?)
@@ -172,6 +172,10 @@ open class FirBackingFieldImpl @FirImplementationDetail constructor(
contextReceivers = newContextReceivers.toMutableOrEmpty()
}
override fun replaceDelegate(newDelegate: FirExpression?) {
delegate = newDelegate
}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {
getter = newGetter
}
@@ -189,6 +189,10 @@ internal class FirDefaultSetterValueParameter(
initializer = newInitializer
}
override fun replaceDelegate(newDelegate: FirExpression?) {
delegate = newDelegate
}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {
getter = newGetter
}
@@ -165,6 +165,8 @@ internal class FirEnumEntryImpl(
initializer = newInitializer
}
override fun replaceDelegate(newDelegate: FirExpression?) {}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {}
override fun replaceSetter(newSetter: FirPropertyAccessor?) {}
@@ -161,6 +161,8 @@ internal class FirErrorPropertyImpl(
override fun replaceInitializer(newInitializer: FirExpression?) {}
override fun replaceDelegate(newDelegate: FirExpression?) {}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {}
override fun replaceSetter(newSetter: FirPropertyAccessor?) {}
@@ -170,6 +170,8 @@ class FirFieldImpl @FirImplementationDetail constructor(
initializer = newInitializer
}
override fun replaceDelegate(newDelegate: FirExpression?) {}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {}
override fun replaceSetter(newSetter: FirPropertyAccessor?) {}
@@ -191,6 +191,10 @@ internal class FirPropertyImpl(
initializer = newInitializer
}
override fun replaceDelegate(newDelegate: FirExpression?) {
delegate = newDelegate
}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {
getter = newGetter
}
@@ -170,6 +170,8 @@ internal class FirValueParameterImpl(
override fun replaceInitializer(newInitializer: FirExpression?) {}
override fun replaceDelegate(newDelegate: FirExpression?) {}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {}
override fun replaceSetter(newSetter: FirPropertyAccessor?) {}
@@ -167,6 +167,10 @@ class FirSyntheticProperty(
notSupported()
}
override fun replaceDelegate(newDelegate: FirExpression?) {
notSupported()
}
override fun replaceBodyResolveState(newBodyResolveState: FirPropertyBodyResolveState) {
notSupported()
}
@@ -440,7 +440,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+name
+symbol("FirVariableSymbol", "out FirVariable")
+initializer.withTransform().withReplace()
+field("delegate", expression, nullable = true).withTransform()
+field("delegate", expression, nullable = true, withReplace = true).withTransform()
generateBooleanFields("var", "val")
+field("getter", propertyAccessor, nullable = true, withReplace = true).withTransform()
+field("setter", propertyAccessor, nullable = true, withReplace = true).withTransform()