Resolve local declaration statuses & types inside bodies in FirBodyResolveTransformer

This commit is contained in:
Mikhail Glukhikh
2019-10-29 12:40:43 +03:00
parent 668a2a58be
commit 60e6d2e521
86 changed files with 857 additions and 276 deletions
@@ -45,6 +45,8 @@ abstract class FirAnonymousFunction : FirPureAbstractElement(), FirFunction<FirA
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
@@ -30,4 +30,6 @@ interface FirCallableDeclaration<F : FirCallableDeclaration<F>> : FirTypedDeclar
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitCallableDeclaration(this, data)
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration<F>
fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration<F>
}
@@ -35,4 +35,8 @@ interface FirCallableMemberDeclaration<F : FirCallableMemberDeclaration<F>> : Fi
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitCallableMemberDeclaration(this, data)
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration<F>
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration<F>
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration<F>
}
@@ -44,7 +44,11 @@ interface FirConstructor : FirMemberFunction<FirConstructor> {
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirConstructor
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirConstructor
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirConstructor
}
@@ -40,5 +40,7 @@ abstract class FirEnumEntry : FirPureAbstractElement(), FirRegularClass {
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitEnumEntry(this, data)
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirEnumEntry
}
@@ -40,6 +40,8 @@ abstract class FirErrorFunction : FirPureAbstractElement(), FirFunction<FirError
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirErrorFunction
@@ -46,9 +46,13 @@ abstract class FirField : FirPureAbstractElement(), FirVariable<FirField>, FirCa
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformReceiverTypeRef(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
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirField
}
@@ -40,6 +40,8 @@ interface FirFunction<F : FirFunction<F>> : FirCallableDeclaration<F>, FirContro
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirFunction<F>
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirFunction<F>
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirFunction<F>
fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction<F>
@@ -27,4 +27,6 @@ interface FirMemberDeclaration : FirNamedDeclaration, FirAnnotationContainer {
val status: FirDeclarationStatus
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitMemberDeclaration(this, data)
fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirMemberDeclaration
}
@@ -41,7 +41,11 @@ interface FirMemberFunction<F : FirMemberFunction<F>> : FirFunction<F>, FirCalla
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirMemberFunction<F>
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirMemberFunction<F>
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirMemberFunction<F>
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirMemberFunction<F>
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirMemberFunction<F>
}
@@ -52,11 +52,15 @@ abstract class FirProperty : FirPureAbstractElement(), FirVariable<FirProperty>,
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformReceiverTypeRef(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
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirProperty
}
@@ -42,9 +42,13 @@ abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction<FirPr
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformContractDescription(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
}
@@ -37,4 +37,6 @@ interface FirRegularClass : FirMemberDeclaration, FirTypeParametersOwner, FirCla
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitRegularClass(this, data)
override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>)
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirRegularClass
}
@@ -40,4 +40,6 @@ abstract class FirSealedClass : FirPureAbstractElement(), FirRegularClass {
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitSealedClass(this, data)
abstract fun replaceInheritors(newInheritors: List<ClassId>)
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSealedClass
}
@@ -44,9 +44,13 @@ abstract class FirSimpleFunction : FirPureAbstractElement(), FirMemberFunction<F
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformContractDescription(transformer: FirTransformer<D>, data: D): FirSimpleFunction
}
@@ -34,4 +34,6 @@ abstract class FirTypeAlias : FirPureAbstractElement(), FirClassLikeDeclaration<
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitTypeAlias(this, data)
abstract fun replaceExpandedTypeRef(newExpandedTypeRef: FirTypeRef)
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirTypeAlias
}
@@ -46,6 +46,8 @@ abstract class FirValueParameter : FirPureAbstractElement(), FirVariable<FirValu
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformReceiverTypeRef(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
@@ -42,6 +42,8 @@ interface FirVariable<F : FirVariable<F>> : FirCallableDeclaration<F>, FirNamedD
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirVariable<F>
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirVariable<F>
fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirVariable<F>
fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirVariable<F>
@@ -64,7 +64,7 @@ class FirAnonymousFunctionImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl {
annotations.transformInplace(transformer, data)
transformReturnTypeRef(transformer, data)
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
transformReceiverTypeRef(transformer, data)
transformControlFlowGraphReference(transformer, data)
typeParameters.transformInplace(transformer, data)
transformValueParameters(transformer, data)
@@ -79,6 +79,11 @@ class FirAnonymousFunctionImpl(
return this
}
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl {
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
return this
}
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
@@ -59,7 +59,7 @@ class FirClassImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirClassImpl {
annotations.transformInplace(transformer, data)
typeParameters.transformInplace(transformer, data)
status = status.transformSingle(transformer, data)
transformStatus(transformer, data)
(declarations.firstOrNull { it is FirConstructorImpl } as? FirConstructorImpl)?.typeParameters?.transformInplace(transformer, data)
declarations.transformInplace(transformer, data)
companionObject = declarations.asSequence().filterIsInstance<FirRegularClass>().firstOrNull { it.status.isCompanion }
@@ -67,6 +67,11 @@ class FirClassImpl(
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirClassImpl {
status = status.transformSingle(transformer, data)
return this
}
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
resolvePhase = newResolvePhase
}
@@ -65,11 +65,11 @@ open class FirConstructorImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
transformReturnTypeRef(transformer, data)
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
transformReceiverTypeRef(transformer, data)
transformControlFlowGraphReference(transformer, data)
transformValueParameters(transformer, data)
body = body?.transformSingle(transformer, data)
status = status.transformSingle(transformer, data)
transformStatus(transformer, data)
annotations.transformInplace(transformer, data)
delegatedConstructor = delegatedConstructor?.transformSingle(transformer, data)
return this
@@ -80,6 +80,11 @@ open class FirConstructorImpl(
return this
}
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
return this
}
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
@@ -90,6 +95,11 @@ open class FirConstructorImpl(
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
status = status.transformSingle(transformer, data)
return this
}
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
resolvePhase = newResolvePhase
}
@@ -64,6 +64,7 @@ class FirDefaultSetterValueParameter(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data)
transformGetter(transformer, data)
transformSetter(transformer, data)
transformOtherChildren(transformer, data)
@@ -75,6 +76,11 @@ class FirDefaultSetterValueParameter(
return this
}
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
return this
}
override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
getter = getter?.transformSingle(transformer, data)
return this
@@ -86,7 +92,6 @@ class FirDefaultSetterValueParameter(
}
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
initializer = initializer?.transformSingle(transformer, data)
delegate = delegate?.transformSingle(transformer, data)
annotations.transformInplace(transformer, data)
@@ -65,7 +65,7 @@ class FirEnumEntryImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
annotations.transformInplace(transformer, data)
typeParameters.transformInplace(transformer, data)
status = status.transformSingle(transformer, data)
transformStatus(transformer, data)
declarations.transformInplace(transformer, data)
superTypeRefs.transformInplace(transformer, data)
transformArguments(transformer, data)
@@ -73,6 +73,11 @@ class FirEnumEntryImpl(
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
status = status.transformSingle(transformer, data)
return this
}
override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
arguments.transformInplace(transformer, data)
return this
@@ -68,6 +68,10 @@ class FirErrorFunctionImpl(
return this
}
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl {
return this
}
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
@@ -62,6 +62,7 @@ class FirFieldImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirFieldImpl {
transformReturnTypeRef(transformer, data)
transformStatus(transformer, data)
transformOtherChildren(transformer, data)
return this
}
@@ -71,6 +72,10 @@ class FirFieldImpl(
return this
}
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirFieldImpl {
return this
}
override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirFieldImpl {
return this
}
@@ -79,10 +84,14 @@ class FirFieldImpl(
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirFieldImpl {
status = status.transformSingle(transformer, data)
return this
}
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirFieldImpl {
annotations.transformInplace(transformer, data)
typeParameters.transformInplace(transformer, data)
status = status.transformSingle(transformer, data)
return this
}
@@ -51,9 +51,13 @@ abstract class FirModifiableConstructor : FirPureAbstractElement(), FirConstruct
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirModifiableConstructor
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirModifiableConstructor
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirModifiableConstructor
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirModifiableConstructor
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirModifiableConstructor
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
}
@@ -41,6 +41,8 @@ interface FirModifiableFunction<F : FirFunction<F>> : FirFunction<F>, FirAbstra
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirModifiableFunction<F>
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirModifiableFunction<F>
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirModifiableFunction<F>
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirModifiableFunction<F>
@@ -42,6 +42,8 @@ interface FirModifiableRegularClass : FirRegularClass, FirModifiableClass<FirReg
override val superTypeRefs: MutableList<FirTypeRef>
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirModifiableRegularClass
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirModifiableRegularClass
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
override fun replaceSupertypesComputationStatus(newSupertypesComputationStatus: SupertypesComputationStatus)
@@ -44,6 +44,8 @@ interface FirModifiableVariable<F : FirVariable<F>> : FirVariable<F>, FirAbstra
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirModifiableVariable<F>
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirModifiableVariable<F>
override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirModifiableVariable<F>
override fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirModifiableVariable<F>
@@ -65,13 +65,13 @@ open class FirPropertyAccessorImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
transformReturnTypeRef(transformer, data)
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
transformReceiverTypeRef(transformer, data)
transformControlFlowGraphReference(transformer, data)
typeParameters.transformInplace(transformer, data)
transformValueParameters(transformer, data)
body = body?.transformSingle(transformer, data)
transformContractDescription(transformer, data)
status = status.transformSingle(transformer, data)
transformStatus(transformer, data)
annotations.transformInplace(transformer, data)
return this
}
@@ -81,6 +81,11 @@ open class FirPropertyAccessorImpl(
return this
}
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
return this
}
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
@@ -96,6 +101,11 @@ open class FirPropertyAccessorImpl(
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
status = status.transformSingle(transformer, data)
return this
}
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
resolvePhase = newResolvePhase
}
@@ -75,9 +75,11 @@ class FirPropertyImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data)
transformGetter(transformer, data)
transformSetter(transformer, data)
transformControlFlowGraphReference(transformer, data)
transformStatus(transformer, data)
transformOtherChildren(transformer, data)
return this
}
@@ -87,6 +89,11 @@ class FirPropertyImpl(
return this
}
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
return this
}
override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
getter = getter?.transformSingle(transformer, data)
return this
@@ -102,13 +109,16 @@ class FirPropertyImpl(
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
status = status.transformSingle(transformer, data)
return this
}
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
initializer = initializer?.transformSingle(transformer, data)
delegate = delegate?.transformSingle(transformer, data)
annotations.transformInplace(transformer, data)
typeParameters.transformInplace(transformer, data)
status = status.transformSingle(transformer, data)
return this
}
@@ -61,7 +61,7 @@ class FirSealedClassImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
annotations.transformInplace(transformer, data)
typeParameters.transformInplace(transformer, data)
status = status.transformSingle(transformer, data)
transformStatus(transformer, data)
(declarations.firstOrNull { it is FirConstructorImpl } as? FirConstructorImpl)?.typeParameters?.transformInplace(transformer, data)
declarations.transformInplace(transformer, data)
companionObject = declarations.asSequence().filterIsInstance<FirRegularClass>().firstOrNull { it.status.isCompanion }
@@ -69,6 +69,11 @@ class FirSealedClassImpl(
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
status = status.transformSingle(transformer, data)
return this
}
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
resolvePhase = newResolvePhase
}
@@ -66,12 +66,12 @@ open class FirSimpleFunctionImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
transformReturnTypeRef(transformer, data)
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
transformReceiverTypeRef(transformer, data)
transformControlFlowGraphReference(transformer, data)
typeParameters.transformInplace(transformer, data)
transformValueParameters(transformer, data)
body = body?.transformSingle(transformer, data)
status = status.transformSingle(transformer, data)
transformStatus(transformer, data)
annotations.transformInplace(transformer, data)
transformContractDescription(transformer, data)
return this
@@ -82,6 +82,11 @@ open class FirSimpleFunctionImpl(
return this
}
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
return this
}
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
@@ -92,6 +97,11 @@ open class FirSimpleFunctionImpl(
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
status = status.transformSingle(transformer, data)
return this
}
override fun <D> transformContractDescription(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
contractDescription = contractDescription.transformSingle(transformer, data)
return this
@@ -50,12 +50,17 @@ class FirTypeAliasImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirTypeAliasImpl {
typeParameters.transformInplace(transformer, data)
status = status.transformSingle(transformer, data)
transformStatus(transformer, data)
expandedTypeRef = expandedTypeRef.transformSingle(transformer, data)
annotations.transformInplace(transformer, data)
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirTypeAliasImpl {
status = status.transformSingle(transformer, data)
return this
}
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
resolvePhase = newResolvePhase
}
@@ -64,6 +64,7 @@ open class FirValueParameterImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data)
transformGetter(transformer, data)
transformSetter(transformer, data)
transformOtherChildren(transformer, data)
@@ -75,6 +76,11 @@ open class FirValueParameterImpl(
return this
}
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
return this
}
override fun <D> transformGetter(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
getter = getter?.transformSingle(transformer, data)
return this
@@ -86,7 +92,6 @@ open class FirValueParameterImpl(
}
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
initializer = initializer?.transformSingle(transformer, data)
delegate = delegate?.transformSingle(transformer, data)
annotations.transformInplace(transformer, data)
@@ -37,6 +37,8 @@ abstract class FirComponentCall : FirFunctionCall() {
abstract override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirComponentCall
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirComponentCall
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirComponentCall
abstract override fun <D> transformExplicitReceiver(transformer: FirTransformer<D>, data: D): FirComponentCall
@@ -38,5 +38,7 @@ abstract class FirFunctionCall : FirQualifiedAccessExpression(), FirCall {
abstract override fun <D> transformArguments(transformer: FirTransformer<D>, data: D): FirFunctionCall
abstract fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirFunctionCall
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirFunctionCall
}
@@ -56,7 +56,7 @@ class FirComponentCallImpl(
typeRef = typeRef.transformSingle(transformer, data)
annotations.transformInplace(transformer, data)
transformArguments(transformer, data)
typeArguments.transformInplace(transformer, data)
transformTypeArguments(transformer, data)
transformCalleeReference(transformer, data)
explicitReceiver = explicitReceiver.transformSingle(transformer, data)
return this
@@ -75,6 +75,11 @@ class FirComponentCallImpl(
return this
}
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirComponentCallImpl {
typeArguments.transformInplace(transformer, data)
return this
}
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirComponentCallImpl {
calleeReference = calleeReference.transformSingle(transformer, data)
return this
@@ -60,7 +60,7 @@ class FirFunctionCallImpl(
extensionReceiver = extensionReceiver.transformSingle(transformer, data)
}
transformArguments(transformer, data)
typeArguments.transformInplace(transformer, data)
transformTypeArguments(transformer, data)
transformCalleeReference(transformer, data)
return this
}
@@ -85,6 +85,11 @@ class FirFunctionCallImpl(
return this
}
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirFunctionCallImpl {
typeArguments.transformInplace(transformer, data)
return this
}
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirFunctionCallImpl {
calleeReference = calleeReference.transformSingle(transformer, data)
return this
@@ -75,7 +75,7 @@ object NodeConfigurator : AbstractFieldConfigurator() {
callableDeclaration.configure {
withArg("F", "FirCallableDeclaration<F>")
parentArg(symbolOwner, "E", "F")
+field("receiverTypeRef", typeRef, nullable = true)
+field("receiverTypeRef", typeRef, nullable = true).withTransform()
+symbol("FirCallableSymbol", "F")
}
@@ -104,7 +104,7 @@ object NodeConfigurator : AbstractFieldConfigurator() {
memberDeclaration.configure {
+typeParameters
+status
+status.withTransform()
}
expression.configure {
@@ -183,7 +183,7 @@ object NodeConfigurator : AbstractFieldConfigurator() {
}
functionCall.configure {
+typeArguments
+typeArguments.withTransform()
+field("calleeReference", namedReference)
}
@@ -296,7 +296,7 @@ object NodeConfigurator : AbstractFieldConfigurator() {
+symbol("FirPropertyAccessorSymbol")
+booleanField("isGetter")
+booleanField("isSetter")
+status
+status.withTransform()
+annotations
}