diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt index 72728c0dffb..0f318df5adf 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt @@ -2,6 +2,7 @@ package org.jetbrains.kotlin.backend.konan import org.jetbrains.kotlin.backend.common.* import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension +import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.backend.common.phaser.* import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataMonolithicSerializer @@ -193,6 +194,16 @@ internal val psiToIrPhase = konanUnitPhase( irModules = deserializer.modules.filterValues { llvmModuleSpecification.containsModule(it) } ir.symbols = symbols + val extensions = IrGenerationExtension.getInstances(config.project) + extensions.forEach { extension -> + extension.generate(irModule!!, IrPluginContext(irModule!!.descriptor, + bindingContext, config.languageVersionSettings, + symbolTable, + generatorContext.typeTranslator, + irBuiltIns + )) + + } functionIrClassFactory.module = (listOf(irModule!!) + deserializer.modules.values) .single { it.descriptor.isKonanStdlib() } @@ -212,19 +223,6 @@ internal val destroySymbolTablePhase = konanUnitPhase( prerequisite = setOf(createSymbolTablePhase) ) -internal val irGeneratorPluginsPhase = konanUnitPhase( - op = { - val extensions = IrGenerationExtension.getInstances(config.project) - extensions.forEach { extension -> - irModule!!.files.forEach { - irFile -> extension.generate(irFile, this, bindingContext) - } - } - }, - name = "IrGeneratorPlugins", - description = "Plugged-in ir generators" -) - // TODO: We copy default value expressions from expects to actuals before IR serialization, // because the current infrastructure doesn't allow us to get them at deserialization stage. // That requires some design and implementation work. @@ -406,7 +404,6 @@ val toplevelPhase: CompilerPhase<*, Unit, Unit> = namedUnitPhase( buildCExportsPhase then psiToIrPhase then destroySymbolTablePhase then - irGeneratorPluginsPhase then copyDefaultValuesToActualPhase then serializerPhase then namedUnitPhase(