[FIR] Add transformDelegate for FirProperty

This commit is contained in:
Dmitriy Novozhilov
2020-02-26 10:50:02 +03:00
parent e8b0ce00e1
commit cda8177502
14 changed files with 45 additions and 3 deletions
@@ -49,6 +49,8 @@ abstract class FirEnumEntry : FirVariable<FirEnumEntry>(), FirCallableMemberDecl
abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirEnumEntry
@@ -49,6 +49,8 @@ abstract class FirField : FirVariable<FirField>(), FirCallableMemberDeclaration<
abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirField
@@ -54,6 +54,8 @@ abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner,
abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirProperty
@@ -49,6 +49,8 @@ abstract class FirValueParameter : FirVariable<FirValueParameter>() {
abstract override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirValueParameter
@@ -47,6 +47,8 @@ abstract class FirVariable<F : FirVariable<F>> : FirPureAbstractElement(), FirCa
abstract fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirVariable<F>
abstract fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirVariable<F>
abstract fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirVariable<F>
abstract fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirVariable<F>
@@ -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 <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
delegate = delegate?.transformSingle(transformer, data)
return this
}
override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
getter = getter?.transformSingle(transformer, data)
return this
@@ -97,7 +103,6 @@ internal class FirDefaultSetterValueParameter(
}
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
delegate = delegate?.transformSingle(transformer, data)
annotations.transformInplace(transformer, data)
defaultValue = defaultValue?.transformSingle(transformer, data)
return this
@@ -82,6 +82,10 @@ internal class FirEnumEntryImpl(
return this
}
override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
return this
}
override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
return this
}
@@ -79,6 +79,10 @@ internal class FirFieldImpl(
return this
}
override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirFieldImpl {
return this
}
override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirFieldImpl {
return this
}
@@ -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 <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
delegate = delegate?.transformSingle(transformer, data)
return this
}
override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
getter = getter?.transformSingle(transformer, data)
return this
@@ -120,7 +126,6 @@ internal class FirPropertyImpl(
}
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
delegate = delegate?.transformSingle(transformer, data)
annotations.transformInplace(transformer, data)
typeParameters.transformInplace(transformer, data)
return this
@@ -76,6 +76,10 @@ open class FirValueParameterImpl @FirImplementationDetail constructor(
return this
}
override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
return this
}
override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
return this
}
@@ -112,6 +112,10 @@ class FirSyntheticProperty(
throw AssertionError("Transformation of synthetic property isn't supported")
}
override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirProperty {
throw AssertionError("Transformation of synthetic property isn't supported")
}
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
resolvePhase = newResolvePhase
}
@@ -337,7 +337,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(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()