From cda8177502f3a4655a47301c84796a50f7eaeae4 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 26 Feb 2020 10:50:02 +0300 Subject: [PATCH] [FIR] Add `transformDelegate` for FirProperty --- .../jetbrains/kotlin/fir/java/declarations/FirJavaField.kt | 4 ++++ .../body/resolve/FirDeclarationsResolveTransformer.kt | 2 ++ .../org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt | 2 ++ .../gen/org/jetbrains/kotlin/fir/declarations/FirField.kt | 2 ++ .../org/jetbrains/kotlin/fir/declarations/FirProperty.kt | 2 ++ .../jetbrains/kotlin/fir/declarations/FirValueParameter.kt | 2 ++ .../org/jetbrains/kotlin/fir/declarations/FirVariable.kt | 2 ++ .../declarations/impl/FirDefaultSetterValueParameter.kt | 7 ++++++- .../kotlin/fir/declarations/impl/FirEnumEntryImpl.kt | 4 ++++ .../jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt | 4 ++++ .../kotlin/fir/declarations/impl/FirPropertyImpl.kt | 7 ++++++- .../kotlin/fir/declarations/impl/FirValueParameterImpl.kt | 4 ++++ .../fir/declarations/synthetic/FirSyntheticProperty.kt | 4 ++++ .../kotlin/fir/tree/generator/NodeConfigurator.kt | 2 +- 14 files changed, 45 insertions(+), 3 deletions(-) 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 535f71058b7..baeea1065ae 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 @@ -116,6 +116,10 @@ class FirJavaField @FirImplementationDetail constructor( } override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} + + override fun transformDelegate(transformer: FirTransformer, data: D): FirField { + return this + } } @FirBuilderDsl diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index a731052330e..29955296010 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -134,6 +134,7 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) assert(variable.isLocal) val resolutionMode = withExpectedType(variable.returnTypeRef) variable.transformInitializer(transformer, resolutionMode) + .transformDelegate(transformer, resolutionMode) .transformOtherChildren(transformer, resolutionMode) .transformInitializer(integerLiteralTypeApproximator, null) if (variable.initializer != null) { @@ -150,6 +151,7 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) val data = withExpectedType(returnTypeRef) return transformReturnTypeRef(transformer, data) .transformInitializer(transformer, data) + .transformDelegate(transformer, data) .transformOtherChildren(transformer, data) } 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 a6e55ae3052..639ddac6ae0 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 @@ -49,6 +49,8 @@ abstract class FirEnumEntry : FirVariable(), FirCallableMemberDecl abstract override fun transformInitializer(transformer: FirTransformer, data: D): FirEnumEntry + abstract override fun transformDelegate(transformer: FirTransformer, data: D): FirEnumEntry + abstract override fun transformGetter(transformer: FirTransformer, data: D): FirEnumEntry abstract override fun transformSetter(transformer: FirTransformer, data: D): FirEnumEntry 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 32adabc4104..fe72ef0ff19 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 @@ -49,6 +49,8 @@ abstract class FirField : FirVariable(), FirCallableMemberDeclaration< abstract override fun transformInitializer(transformer: FirTransformer, data: D): FirField + abstract override fun transformDelegate(transformer: FirTransformer, data: D): FirField + abstract override fun transformGetter(transformer: FirTransformer, data: D): FirField abstract override fun transformSetter(transformer: FirTransformer, data: D): FirField 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 88ac26edc4b..29b2b7e3e28 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 @@ -54,6 +54,8 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, abstract override fun transformInitializer(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformDelegate(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformGetter(transformer: FirTransformer, data: D): FirProperty abstract override fun transformSetter(transformer: FirTransformer, data: D): FirProperty 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 96f14603dcd..1aa9ded5530 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 @@ -49,6 +49,8 @@ abstract class FirValueParameter : FirVariable() { abstract override fun transformInitializer(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformDelegate(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformGetter(transformer: FirTransformer, data: D): FirValueParameter abstract override fun transformSetter(transformer: FirTransformer, data: D): FirValueParameter 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 3eb30bc77fa..7009577a285 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 @@ -47,6 +47,8 @@ abstract class FirVariable> : FirPureAbstractElement(), FirCa abstract fun transformInitializer(transformer: FirTransformer, data: D): FirVariable + abstract fun transformDelegate(transformer: FirTransformer, data: D): FirVariable + abstract fun transformGetter(transformer: FirTransformer, data: D): FirVariable abstract fun transformSetter(transformer: FirTransformer, data: D): FirVariable 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 385bf21e86d..2e943f7f177 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 @@ -65,6 +65,7 @@ internal class FirDefaultSetterValueParameter( transformReturnTypeRef(transformer, data) transformReceiverTypeRef(transformer, data) transformInitializer(transformer, data) + transformDelegate(transformer, data) transformGetter(transformer, data) transformSetter(transformer, data) transformOtherChildren(transformer, data) @@ -86,6 +87,11 @@ internal class FirDefaultSetterValueParameter( return this } + override fun transformDelegate(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { + delegate = delegate?.transformSingle(transformer, data) + return this + } + override fun transformGetter(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { getter = getter?.transformSingle(transformer, data) return this @@ -97,7 +103,6 @@ internal class FirDefaultSetterValueParameter( } override fun transformOtherChildren(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { - delegate = delegate?.transformSingle(transformer, data) annotations.transformInplace(transformer, data) defaultValue = defaultValue?.transformSingle(transformer, data) return this 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 657f335bbae..65ce776227f 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 @@ -82,6 +82,10 @@ internal class FirEnumEntryImpl( return this } + override fun transformDelegate(transformer: FirTransformer, data: D): FirEnumEntryImpl { + return this + } + override fun transformGetter(transformer: FirTransformer, data: D): FirEnumEntryImpl { return this } 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 ae6b2069417..86f07c827ad 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 @@ -79,6 +79,10 @@ internal class FirFieldImpl( return this } + override fun transformDelegate(transformer: FirTransformer, data: D): FirFieldImpl { + return this + } + override fun transformGetter(transformer: FirTransformer, data: D): FirFieldImpl { return this } 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 2b0e69235ff..cd1994d5cf0 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 @@ -76,6 +76,7 @@ internal class FirPropertyImpl( transformReturnTypeRef(transformer, data) transformReceiverTypeRef(transformer, data) transformInitializer(transformer, data) + transformDelegate(transformer, data) transformGetter(transformer, data) transformSetter(transformer, data) transformControlFlowGraphReference(transformer, data) @@ -99,6 +100,11 @@ internal class FirPropertyImpl( return this } + override fun transformDelegate(transformer: FirTransformer, data: D): FirPropertyImpl { + delegate = delegate?.transformSingle(transformer, data) + return this + } + override fun transformGetter(transformer: FirTransformer, data: D): FirPropertyImpl { getter = getter?.transformSingle(transformer, data) return this @@ -120,7 +126,6 @@ internal class FirPropertyImpl( } override fun transformOtherChildren(transformer: FirTransformer, data: D): FirPropertyImpl { - delegate = delegate?.transformSingle(transformer, data) annotations.transformInplace(transformer, data) typeParameters.transformInplace(transformer, data) return this 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 e725d86e230..d4a5723142b 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 @@ -76,6 +76,10 @@ open class FirValueParameterImpl @FirImplementationDetail constructor( return this } + override fun transformDelegate(transformer: FirTransformer, data: D): FirValueParameterImpl { + return this + } + override fun transformGetter(transformer: FirTransformer, data: D): FirValueParameterImpl { return this } 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 fa6265b2c4a..d59105b875c 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 @@ -112,6 +112,10 @@ class FirSyntheticProperty( throw AssertionError("Transformation of synthetic property isn't supported") } + override fun transformDelegate(transformer: FirTransformer, data: D): FirProperty { + throw AssertionError("Transformation of synthetic property isn't supported") + } + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) { resolvePhase = newResolvePhase } 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 dad57953336..b21e70d05ce 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 @@ -337,7 +337,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +name +symbol("FirVariableSymbol", "F") +initializer.withTransform() - +field("delegate", expression, nullable = true) + +field("delegate", expression, nullable = true).withTransform() +field("delegateFieldSymbol", delegateFieldSymbolType, "F", nullable = true) generateBooleanFields("var", "val") +field("getter", propertyAccessor, nullable = true).withTransform()