diff --git a/compiler/ir/backend.js/build.gradle.kts b/compiler/ir/backend.js/build.gradle.kts index 75b5b825be1..01169474abf 100644 --- a/compiler/ir/backend.js/build.gradle.kts +++ b/compiler/ir/backend.js/build.gradle.kts @@ -13,6 +13,7 @@ dependencies { compile(project(":compiler:ir.serialization.common")) compile(project(":compiler:ir.serialization.js")) compile(project(":compiler:ir.tree.persistent")) + compile(project(":compiler:ir.tree.impl")) compile(project(":js:js.ast")) compile(project(":js:js.frontend")) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt index 602ecb58b5b..07a6285df25 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt @@ -20,8 +20,8 @@ import org.jetbrains.kotlin.ir.backend.js.utils.* import org.jetbrains.kotlin.ir.builders.declarations.addFunction import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl -import org.jetbrains.kotlin.ir.declarations.persistent.PersistentIrFactory import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.ir.symbols.impl.DescriptorlessExternalPackageFragmentSymbol @@ -45,6 +45,7 @@ class JsIrBackendContext( override val scriptMode: Boolean = false, override val es6mode: Boolean = false, val propertyLazyInitialization: Boolean = false, + override val irFactory: IrFactory = IrFactoryImpl ) : JsCommonBackendContext { val fileToInitializationFuns: MutableMap = mutableMapOf() val fileToInitializerPureness: MutableMap = mutableMapOf() @@ -55,8 +56,6 @@ class JsIrBackendContext( override var inVerbosePhase: Boolean = false - override val irFactory: IrFactory = PersistentIrFactory - val devMode = configuration[JSConfigurationKeys.DEVELOPER_MODE] ?: false val errorPolicy = configuration[JSConfigurationKeys.ERROR_TOLERANCE_POLICY] ?: ErrorTolerancePolicy.DEFAULT diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt index 22df3e9ab30..8d705660543 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransf import org.jetbrains.kotlin.ir.backend.js.utils.NameTables import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.StageController +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.declarations.persistent.PersistentIrFactory import org.jetbrains.kotlin.ir.declarations.stageController import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator @@ -53,8 +54,10 @@ fun compile( ): CompilerResult { stageController = StageController() + val irFactory = if (dceDriven) PersistentIrFactory else IrFactoryImpl + val (moduleFragment: IrModuleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer) = - loadIr(project, mainModule, analyzer, configuration, allDependencies, friendDependencies, PersistentIrFactory) + loadIr(project, mainModule, analyzer, configuration, allDependencies, friendDependencies, irFactory) val moduleDescriptor = moduleFragment.descriptor @@ -72,6 +75,7 @@ fun compile( configuration, es6mode = es6mode, propertyLazyInitialization = propertyLazyInitialization, + irFactory = irFactory ) // Load declarations referenced during `context` initialization