Refactor psi2irPhase in Native compiler according to bf910f92 commit in

Kotlin

(cherry picked from commit 0995b351eeb5d147074f038892e0aa17eb068302)
This commit is contained in:
Leonid Startsev
2019-11-18 17:25:29 +03:00
committed by Vasily Levchenko
parent 0b8f5746b0
commit bd0396c71e
@@ -1,8 +1,8 @@
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.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.common.phaser.*
import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataMonolithicSerializer
@@ -142,6 +142,21 @@ internal val psiToIrPhase = konanUnitPhase(
Psi2IrConfiguration(false))
val generatorContext = translator.createGeneratorContext(moduleDescriptor, bindingContext, symbolTable)
translator.addPostprocessingStep { module ->
val extensions = IrGenerationExtension.getInstances(config.project)
val pluginContext = IrPluginContext(
generatorContext.moduleDescriptor,
generatorContext.bindingContext,
generatorContext.languageVersionSettings,
generatorContext.symbolTable,
generatorContext.typeTranslator,
generatorContext.irBuiltIns
)
extensions.forEach { extension ->
extension.generate(module, pluginContext)
}
}
val forwardDeclarationsModuleDescriptor = moduleDescriptor.allDependencyModules.firstOrNull { it.isForwardDeclarationModule }
val modulesWithoutDCE = moduleDescriptor.allDependencyModules
@@ -200,16 +215,6 @@ 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() }