[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 return this
} }
override fun replaceDelegate(newDelegate: FirExpression?) {}
override val delegate: FirExpression? override val delegate: FirExpression?
get() = null get() = null
@@ -178,6 +178,8 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
override fun replaceInitializer(newInitializer: FirExpression?) { override fun replaceInitializer(newInitializer: FirExpression?) {
} }
override fun replaceDelegate(newDelegate: FirExpression?) {}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { 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 replaceContextReceivers(newContextReceivers: List<FirContextReceiver>)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?) abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: FirPropertyAccessor?) abstract override fun replaceSetter(newSetter: FirPropertyAccessor?)
@@ -65,6 +65,8 @@ abstract class FirEnumEntry : FirVariable() {
abstract override fun replaceInitializer(newInitializer: FirExpression?) abstract override fun replaceInitializer(newInitializer: FirExpression?)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?) abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: 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 replaceInitializer(newInitializer: FirExpression?)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?) abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: 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 replaceInitializer(newInitializer: FirExpression?)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?) abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: 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 replaceInitializer(newInitializer: FirExpression?)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?) abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: 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 replaceInitializer(newInitializer: FirExpression?)
abstract override fun replaceDelegate(newDelegate: FirExpression?)
abstract override fun replaceGetter(newGetter: FirPropertyAccessor?) abstract override fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract override fun replaceSetter(newSetter: FirPropertyAccessor?) abstract override fun replaceSetter(newSetter: FirPropertyAccessor?)
@@ -66,6 +66,8 @@ sealed class FirVariable : FirCallableDeclaration(), FirStatement {
abstract fun replaceInitializer(newInitializer: FirExpression?) abstract fun replaceInitializer(newInitializer: FirExpression?)
abstract fun replaceDelegate(newDelegate: FirExpression?)
abstract fun replaceGetter(newGetter: FirPropertyAccessor?) abstract fun replaceGetter(newGetter: FirPropertyAccessor?)
abstract fun replaceSetter(newSetter: FirPropertyAccessor?) abstract fun replaceSetter(newSetter: FirPropertyAccessor?)
@@ -172,6 +172,10 @@ open class FirBackingFieldImpl @FirImplementationDetail constructor(
contextReceivers = newContextReceivers.toMutableOrEmpty() contextReceivers = newContextReceivers.toMutableOrEmpty()
} }
override fun replaceDelegate(newDelegate: FirExpression?) {
delegate = newDelegate
}
override fun replaceGetter(newGetter: FirPropertyAccessor?) { override fun replaceGetter(newGetter: FirPropertyAccessor?) {
getter = newGetter getter = newGetter
} }
@@ -189,6 +189,10 @@ internal class FirDefaultSetterValueParameter(
initializer = newInitializer initializer = newInitializer
} }
override fun replaceDelegate(newDelegate: FirExpression?) {
delegate = newDelegate
}
override fun replaceGetter(newGetter: FirPropertyAccessor?) { override fun replaceGetter(newGetter: FirPropertyAccessor?) {
getter = newGetter getter = newGetter
} }
@@ -165,6 +165,8 @@ internal class FirEnumEntryImpl(
initializer = newInitializer initializer = newInitializer
} }
override fun replaceDelegate(newDelegate: FirExpression?) {}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {} override fun replaceGetter(newGetter: FirPropertyAccessor?) {}
override fun replaceSetter(newSetter: FirPropertyAccessor?) {} override fun replaceSetter(newSetter: FirPropertyAccessor?) {}
@@ -161,6 +161,8 @@ internal class FirErrorPropertyImpl(
override fun replaceInitializer(newInitializer: FirExpression?) {} override fun replaceInitializer(newInitializer: FirExpression?) {}
override fun replaceDelegate(newDelegate: FirExpression?) {}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {} override fun replaceGetter(newGetter: FirPropertyAccessor?) {}
override fun replaceSetter(newSetter: FirPropertyAccessor?) {} override fun replaceSetter(newSetter: FirPropertyAccessor?) {}
@@ -170,6 +170,8 @@ class FirFieldImpl @FirImplementationDetail constructor(
initializer = newInitializer initializer = newInitializer
} }
override fun replaceDelegate(newDelegate: FirExpression?) {}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {} override fun replaceGetter(newGetter: FirPropertyAccessor?) {}
override fun replaceSetter(newSetter: FirPropertyAccessor?) {} override fun replaceSetter(newSetter: FirPropertyAccessor?) {}
@@ -191,6 +191,10 @@ internal class FirPropertyImpl(
initializer = newInitializer initializer = newInitializer
} }
override fun replaceDelegate(newDelegate: FirExpression?) {
delegate = newDelegate
}
override fun replaceGetter(newGetter: FirPropertyAccessor?) { override fun replaceGetter(newGetter: FirPropertyAccessor?) {
getter = newGetter getter = newGetter
} }
@@ -170,6 +170,8 @@ internal class FirValueParameterImpl(
override fun replaceInitializer(newInitializer: FirExpression?) {} override fun replaceInitializer(newInitializer: FirExpression?) {}
override fun replaceDelegate(newDelegate: FirExpression?) {}
override fun replaceGetter(newGetter: FirPropertyAccessor?) {} override fun replaceGetter(newGetter: FirPropertyAccessor?) {}
override fun replaceSetter(newSetter: FirPropertyAccessor?) {} override fun replaceSetter(newSetter: FirPropertyAccessor?) {}
@@ -167,6 +167,10 @@ class FirSyntheticProperty(
notSupported() notSupported()
} }
override fun replaceDelegate(newDelegate: FirExpression?) {
notSupported()
}
override fun replaceBodyResolveState(newBodyResolveState: FirPropertyBodyResolveState) { override fun replaceBodyResolveState(newBodyResolveState: FirPropertyBodyResolveState) {
notSupported() notSupported()
} }
@@ -440,7 +440,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+name +name
+symbol("FirVariableSymbol", "out FirVariable") +symbol("FirVariableSymbol", "out FirVariable")
+initializer.withTransform().withReplace() +initializer.withTransform().withReplace()
+field("delegate", expression, nullable = true).withTransform() +field("delegate", expression, nullable = true, withReplace = true).withTransform()
generateBooleanFields("var", "val") generateBooleanFields("var", "val")
+field("getter", propertyAccessor, nullable = true, withReplace = true).withTransform() +field("getter", propertyAccessor, nullable = true, withReplace = true).withTransform()
+field("setter", propertyAccessor, nullable = true, withReplace = true).withTransform() +field("setter", propertyAccessor, nullable = true, withReplace = true).withTransform()