IR: rename DeclarationFactory to InnerClassesSupport, move out of context

Methods of the common interface DeclarationFactory were only used in
lowerings in InnerClassesLowering, which were used in JVM and JS, not
Native. Therefore, it makes sense to have this as a separate interface
and pass its implementation to these lowerings directly, instead of
declaring it in the common context (which is not going to be implemented
in Native).
This commit is contained in:
Alexander Udalov
2020-07-08 18:40:23 +02:00
parent cf884fb048
commit c7f9dc1c40
14 changed files with 144 additions and 130 deletions
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.backend.wasm
import org.jetbrains.kotlin.backend.common.ir.Ir
import org.jetbrains.kotlin.backend.common.ir.Symbols
import org.jetbrains.kotlin.backend.js.JsDeclarationFactory
import org.jetbrains.kotlin.ir.backend.js.lower.JsInnerClassesSupport
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
@@ -52,7 +52,7 @@ class WasmBackendContext(
override val mapping = JsMapping()
override val declarationFactory = JsDeclarationFactory(mapping)
val innerClassesSupport = JsInnerClassesSupport(mapping)
val objectToGetInstanceFunction = mutableMapOf<IrClassSymbol, IrSimpleFunction>()
override val internalPackageFqn = FqName("kotlin.wasm")
@@ -100,6 +100,3 @@ class DescriptorlessExternalPackageFragmentSymbol : IrExternalPackageFragmentSym
override val signature: IdSignature
get() = error("Operation is unsupported")
}
@@ -149,20 +149,20 @@ private val localClassExtractionPhase = makeWasmModulePhase(
)
private val innerClassesLoweringPhase = makeWasmModulePhase(
::InnerClassesLowering,
{ context -> InnerClassesLowering(context, context.innerClassesSupport) },
name = "InnerClassesLowering",
description = "Capture outer this reference to inner class"
)
private val innerClassesMemberBodyLoweringPhase = makeWasmModulePhase(
::InnerClassesMemberBodyLowering,
{ context -> InnerClassesMemberBodyLowering(context, context.innerClassesSupport) },
name = "InnerClassesMemberBody",
description = "Replace `this` with 'outer this' field references",
prerequisite = setOf(innerClassesLoweringPhase)
)
private val innerClassConstructorCallsLoweringPhase = makeWasmModulePhase(
::InnerClassConstructorCallsLowering,
{ context -> InnerClassConstructorCallsLowering(context, context.innerClassesSupport) },
name = "InnerClassConstructorCallsLowering",
description = "Replace inner class constructor invocation"
)