[FIR] Fix problems with renaming invocationKind and field in FirAnonymousFunction

This commit is contained in:
Dmitriy Novozhilov
2020-06-19 16:27:40 +03:00
parent 9c8e979308
commit a7675c16d5
7 changed files with 17 additions and 13 deletions
@@ -69,7 +69,7 @@ fun FirAnonymousFunction.copy(
typeRef: FirTypeRef = this.typeRef, typeRef: FirTypeRef = this.typeRef,
label: FirLabel? = this.label, label: FirLabel? = this.label,
controlFlowGraphReference: FirControlFlowGraphReference = this.controlFlowGraphReference, controlFlowGraphReference: FirControlFlowGraphReference = this.controlFlowGraphReference,
eventOccurrencesRange: EventOccurrencesRange? = this.eventOccurrencesRange invocationKind: EventOccurrencesRange? = this.invocationKind
): FirAnonymousFunction { ): FirAnonymousFunction {
return buildAnonymousFunction { return buildAnonymousFunction {
this.source = source this.source = source
@@ -85,7 +85,7 @@ fun FirAnonymousFunction.copy(
this.typeRef = typeRef this.typeRef = typeRef
this.label = label this.label = label
this.controlFlowGraphReference = controlFlowGraphReference this.controlFlowGraphReference = controlFlowGraphReference
this.eventOccurrencesRange = eventOccurrencesRange this.invocationKind = invocationKind
} }
} }
@@ -207,7 +207,7 @@ class ControlFlowGraphBuilder {
} }
fun enterAnonymousFunction(anonymousFunction: FirAnonymousFunction): Pair<PostponedLambdaEnterNode?, FunctionEnterNode> { fun enterAnonymousFunction(anonymousFunction: FirAnonymousFunction): Pair<PostponedLambdaEnterNode?, FunctionEnterNode> {
val invocationKind = anonymousFunction.eventOccurrencesRange val invocationKind = anonymousFunction.invocationKind
var previousNodeIsNew = false var previousNodeIsNew = false
val symbol = anonymousFunction.symbol val symbol = anonymousFunction.symbol
@@ -293,7 +293,7 @@ class ControlFlowGraphBuilder {
lastNodes.push(postponedExitNode) lastNodes.push(postponedExitNode)
} }
val invocationKind = anonymousFunction.eventOccurrencesRange val invocationKind = anonymousFunction.invocationKind
if (invocationKind != null) { if (invocationKind != null) {
addEdge(exitNode, postponedExitNode, preferredKind = EdgeKind.CfgForward) addEdge(exitNode, postponedExitNode, preferredKind = EdgeKind.CfgForward)
} else { } else {
@@ -37,7 +37,7 @@ abstract class FirAnonymousFunction : FirFunction<FirAnonymousFunction>, FirExpr
abstract override val typeRef: FirTypeRef abstract override val typeRef: FirTypeRef
abstract override val symbol: FirAnonymousFunctionSymbol abstract override val symbol: FirAnonymousFunctionSymbol
abstract val label: FirLabel? abstract val label: FirLabel?
abstract val eventOccurrencesRange: EventOccurrencesRange? abstract val invocationKind: EventOccurrencesRange?
abstract val isLambda: Boolean abstract val isLambda: Boolean
abstract override val typeParameters: List<FirTypeParameter> abstract override val typeParameters: List<FirTypeParameter>
@@ -53,7 +53,7 @@ abstract class FirAnonymousFunction : FirFunction<FirAnonymousFunction>, FirExpr
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
abstract fun replaceInvocationKind(newEventOccurrencesRange: EventOccurrencesRange?) abstract fun replaceInvocationKind(newInvocationKind: EventOccurrencesRange?)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousFunction abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
@@ -13,9 +13,12 @@ import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.builder.FirFunctionBuilder
import org.jetbrains.kotlin.fir.declarations.impl.FirAnonymousFunctionImpl import org.jetbrains.kotlin.fir.declarations.impl.FirAnonymousFunctionImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
@@ -25,6 +28,7 @@ import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReferenc
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
import org.jetbrains.kotlin.fir.visitors.*
/* /*
* This file was generated automatically * This file was generated automatically
@@ -45,7 +49,7 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
lateinit var symbol: FirAnonymousFunctionSymbol lateinit var symbol: FirAnonymousFunctionSymbol
var label: FirLabel? = null var label: FirLabel? = null
var eventOccurrencesRange: EventOccurrencesRange? = null var invocationKind: EventOccurrencesRange? = null
var isLambda: Boolean by kotlin.properties.Delegates.notNull<Boolean>() var isLambda: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
val typeParameters: MutableList<FirTypeParameter> = mutableListOf() val typeParameters: MutableList<FirTypeParameter> = mutableListOf()
@@ -63,7 +67,7 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu
typeRef, typeRef,
symbol, symbol,
label, label,
eventOccurrencesRange, invocationKind,
isLambda, isLambda,
typeParameters, typeParameters,
) )
@@ -40,7 +40,7 @@ internal class FirAnonymousFunctionImpl(
override var typeRef: FirTypeRef, override var typeRef: FirTypeRef,
override val symbol: FirAnonymousFunctionSymbol, override val symbol: FirAnonymousFunctionSymbol,
override var label: FirLabel?, override var label: FirLabel?,
override var eventOccurrencesRange: EventOccurrencesRange?, override var invocationKind: EventOccurrencesRange?,
override val isLambda: Boolean, override val isLambda: Boolean,
override val typeParameters: MutableList<FirTypeParameter>, override val typeParameters: MutableList<FirTypeParameter>,
) : FirAnonymousFunction() { ) : FirAnonymousFunction() {
@@ -123,6 +123,6 @@ internal class FirAnonymousFunctionImpl(
} }
override fun replaceInvocationKind(newInvocationKind: EventOccurrencesRange?) { override fun replaceInvocationKind(newInvocationKind: EventOccurrencesRange?) {
eventOccurrencesRange = newInvocationKind invocationKind = newInvocationKind
} }
} }
@@ -449,8 +449,8 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
anonymousFunction.valueParameters.renderParameters() anonymousFunction.valueParameters.renderParameters()
print(": ") print(": ")
anonymousFunction.returnTypeRef.accept(this) anonymousFunction.returnTypeRef.accept(this)
if (anonymousFunction.eventOccurrencesRange != null) { if (anonymousFunction.invocationKind != null) {
print(" <kind=${anonymousFunction.eventOccurrencesRange}> ") print(" <kind=${anonymousFunction.invocationKind}> ")
} }
if (mode.renderLambdaBodies) { if (mode.renderLambdaBodies) {
anonymousFunction.body?.renderBody() anonymousFunction.body?.renderBody()
@@ -266,7 +266,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
parentArg(function, "F", anonymousFunction) parentArg(function, "F", anonymousFunction)
+symbol("FirAnonymousFunctionSymbol") +symbol("FirAnonymousFunctionSymbol")
+field(label, nullable = true) +field(label, nullable = true)
+field(eventOccurrencesRangeType, nullable = true, withReplace = true).apply { +field("invocationKind", eventOccurrencesRangeType, nullable = true, withReplace = true).apply {
isMutable = true isMutable = true
} }
+booleanField("isLambda") +booleanField("isLambda")