From f8b2b4ac212eba36dc90ead48886b613c63e1030 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Sat, 1 Jul 2023 17:46:35 +0200 Subject: [PATCH] [FIR] FirVariable: add replace method for delegate It is required to properly implement lazy expression calculation ^KT-59687 --- .../jetbrains/kotlin/fir/java/declarations/FirJavaField.kt | 1 + .../kotlin/fir/java/declarations/FirJavaValueParameter.kt | 2 ++ .../org/jetbrains/kotlin/fir/declarations/FirBackingField.kt | 2 ++ .../gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt | 2 ++ .../org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt | 2 ++ .../gen/org/jetbrains/kotlin/fir/declarations/FirField.kt | 2 ++ .../gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt | 2 ++ .../jetbrains/kotlin/fir/declarations/FirValueParameter.kt | 2 ++ .../gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt | 2 ++ .../kotlin/fir/declarations/impl/FirBackingFieldImpl.kt | 4 ++++ .../fir/declarations/impl/FirDefaultSetterValueParameter.kt | 4 ++++ .../kotlin/fir/declarations/impl/FirEnumEntryImpl.kt | 2 ++ .../kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt | 2 ++ .../jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt | 2 ++ .../jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt | 4 ++++ .../kotlin/fir/declarations/impl/FirValueParameterImpl.kt | 2 ++ .../kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt | 4 ++++ .../jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt | 2 +- 18 files changed, 42 insertions(+), 1 deletion(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt index 534d2963dd5..1ed7d5f8712 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt @@ -142,6 +142,7 @@ class FirJavaField @FirImplementationDetail constructor( return this } + override fun replaceDelegate(newDelegate: FirExpression?) {} override val delegate: FirExpression? get() = null diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt index 59472933460..20cc4ba7ae8 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt @@ -178,6 +178,8 @@ class FirJavaValueParameter @FirImplementationDetail constructor( override fun replaceInitializer(newInitializer: FirExpression?) { } + override fun replaceDelegate(newDelegate: FirExpression?) {} + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirBackingField.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirBackingField.kt index 2bef9101e6a..f1977e0b8c7 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirBackingField.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirBackingField.kt @@ -64,6 +64,8 @@ abstract class FirBackingField : FirVariable(), FirTypeParametersOwner, FirState abstract override fun replaceContextReceivers(newContextReceivers: List) + abstract override fun replaceDelegate(newDelegate: FirExpression?) + abstract override fun replaceGetter(newGetter: FirPropertyAccessor?) abstract override fun replaceSetter(newSetter: FirPropertyAccessor?) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt index 21104ee9c5e..0c7f4d9db80 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt @@ -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?) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt index ec80df29f0d..951dc6c5ccb 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt @@ -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?) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt index 9cd234b53b2..4b077d73818 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt @@ -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?) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt index a0d37e93bcf..dae9595cf8b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt @@ -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?) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt index 0b621b907cb..18b9c5c10e5 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt @@ -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?) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt index 32ef41e80dd..a3e66e3c26b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt @@ -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?) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirBackingFieldImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirBackingFieldImpl.kt index 5176a8c8a98..66baca4d8fc 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirBackingFieldImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirBackingFieldImpl.kt @@ -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 } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt index 007608938d6..cce3fc8b2e7 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt @@ -189,6 +189,10 @@ internal class FirDefaultSetterValueParameter( initializer = newInitializer } + override fun replaceDelegate(newDelegate: FirExpression?) { + delegate = newDelegate + } + override fun replaceGetter(newGetter: FirPropertyAccessor?) { getter = newGetter } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt index e76d0eb0c59..090f78b2924 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt @@ -165,6 +165,8 @@ internal class FirEnumEntryImpl( initializer = newInitializer } + override fun replaceDelegate(newDelegate: FirExpression?) {} + override fun replaceGetter(newGetter: FirPropertyAccessor?) {} override fun replaceSetter(newSetter: FirPropertyAccessor?) {} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt index 52801295e85..aa0cfcf7cdd 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt @@ -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?) {} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt index 0a2019bb9c7..bd2b51ffe7e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt @@ -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?) {} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt index 3ea0df9754d..66c469108f9 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt @@ -191,6 +191,10 @@ internal class FirPropertyImpl( initializer = newInitializer } + override fun replaceDelegate(newDelegate: FirExpression?) { + delegate = newDelegate + } + override fun replaceGetter(newGetter: FirPropertyAccessor?) { getter = newGetter } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt index 9ffd840f8dc..61df8b55a2c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt @@ -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?) {} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt index 44ca5e835f0..d4066be2bc9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt @@ -167,6 +167,10 @@ class FirSyntheticProperty( notSupported() } + override fun replaceDelegate(newDelegate: FirExpression?) { + notSupported() + } + override fun replaceBodyResolveState(newBodyResolveState: FirPropertyBodyResolveState) { notSupported() } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 41bbb3e632b..74fd6972b2c 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -440,7 +440,7 @@ object NodeConfigurator : AbstractFieldConfigurator(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()