[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
@@ -197,9 +197,7 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
builder(anonymousFunction) {
parents += functionBuilder
defaultNull("invocationKind", "label", "body")
default("controlFlowGraphReference", "FirEmptyControlFlowGraphReference")
useTypes(emptyCfgReferenceType)
defaultNull("invocationKind", "label", "body", "controlFlowGraphReference")
}
builder(propertyAccessor) {
@@ -74,7 +74,7 @@ object FieldSets {
val status = field("status", declarationStatus)
val controlFlowGraphReferenceField = field("controlFlowGraphReference", controlFlowGraphReference).withTransform()
val controlFlowGraphReferenceField = field("controlFlowGraphReference", controlFlowGraphReference, withReplace = true, nullable = true)
val visibility = field(visibilityType)
@@ -370,10 +370,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
impl(superReference, "FirExplicitSuperReference")
impl(controlFlowGraphReference, "FirEmptyControlFlowGraphReference") {
noSource()
kind = Object
}
noImpl(controlFlowGraphReference)
impl(resolvedTypeRef) {
publicImplementation()
@@ -470,10 +467,9 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
private fun configureAllImplementations() {
configureFieldInAllImplementations(
field = "controlFlowGraphReference",
implementationPredicate = { it.type != "FirAnonymousFunctionImpl"}
implementationPredicate = { it.type != "FirAnonymousFunctionImpl" }
) {
default(it, "FirEmptyControlFlowGraphReference")
useTypes(emptyCfgReferenceType)
defaultNull(it)
}
val implementationWithConfigurableTypeRef = listOf(