[FIR] Add replaceControlFlowGraphReference function for FirFunction

This commit is contained in:
Oleg Ivanov
2020-07-14 17:57:56 +03:00
parent 7da94cc299
commit 15598b62c9
52 changed files with 168 additions and 286 deletions
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.declarations.builder.FirRegularClassBuilder
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -47,7 +46,7 @@ class FirJavaClass @FirImplementationDetail internal constructor(
internal val existingNestedClassifierNames: List<Name>
) : FirRegularClass() {
override val hasLazyNestedClassifiers: Boolean get() = true
override val controlFlowGraphReference: FirControlFlowGraphReference get() = FirEmptyControlFlowGraphReference
override val controlFlowGraphReference: FirControlFlowGraphReference? get() = null
init {
symbol.bind(this)
@@ -70,6 +69,8 @@ class FirJavaClass @FirImplementationDetail internal constructor(
resolvePhase = newResolvePhase
}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {}
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
declarations.forEach { it.accept(visitor, data) }
annotations.forEach { it.accept(visitor, data) }
@@ -97,10 +98,6 @@ class FirJavaClass @FirImplementationDetail internal constructor(
return this
}
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirRegularClass {
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirJavaClass {
annotations.transformInplace(transformer, data)
return this
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.FirTransformer
@@ -56,17 +55,13 @@ class FirJavaConstructor @FirImplementationDetail constructor(
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override val controlFlowGraphReference: FirControlFlowGraphReference get() = FirEmptyControlFlowGraphReference
override val controlFlowGraphReference: FirControlFlowGraphReference? get() = null
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirJavaConstructor {
valueParameters.transformInplace(transformer, data)
return this
}
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirJavaConstructor {
return this
}
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor {
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
return this
@@ -78,7 +73,7 @@ class FirJavaConstructor @FirImplementationDetail constructor(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
returnTypeRef.accept(visitor, data)
controlFlowGraphReference.accept(visitor, data)
controlFlowGraphReference?.accept(visitor, data)
typeParameters.forEach { it.accept(visitor, data) }
valueParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data)
@@ -87,7 +82,6 @@ class FirJavaConstructor @FirImplementationDetail constructor(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirJavaConstructor {
transformReturnTypeRef(transformer, data)
transformControlFlowGraphReference(transformer, data)
transformTypeParameters(transformer, data)
transformValueParameters(transformer, data)
status = status.transformSingle(transformer, data)
@@ -134,6 +128,8 @@ class FirJavaConstructor @FirImplementationDetail constructor(
}
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {}
}
@FirBuilderDsl