[IR] Corresponding Fix K/N for plugin api changes

(cherry picked from commit 17206bf464b987c1d1f2763477076de72889822e)
This commit is contained in:
Roman Artemev
2020-05-06 11:38:29 +03:00
committed by Vasily Levchenko
parent 2629c44a34
commit c8694b90b3
2 changed files with 22 additions and 16 deletions
@@ -23,12 +23,14 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin
import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin
import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.visitors.acceptVoid
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
import org.jetbrains.kotlin.utils.DFS
@@ -147,20 +149,6 @@ internal val psiToIrPhase = konanUnitPhase(
val pluginExtensions = IrGenerationExtension.getInstances(config.project)
translator.addPostprocessingStep { module ->
val pluginContext = IrPluginContext(
generatorContext.moduleDescriptor,
generatorContext.bindingContext,
generatorContext.languageVersionSettings,
generatorContext.symbolTable,
generatorContext.typeTranslator,
generatorContext.irBuiltIns
)
pluginExtensions.forEach { extension ->
extension.generate(module, pluginContext)
}
}
val forwardDeclarationsModuleDescriptor = moduleDescriptor.allDependencyModules.firstOrNull { it.isForwardDeclarationModule }
val modulesWithoutDCE = moduleDescriptor.allDependencyModules
@@ -171,11 +159,12 @@ internal val psiToIrPhase = konanUnitPhase(
val exportedDependencies = (getExportedDependencies() + modulesWithoutDCE).distinct()
val functionIrClassFactory = BuiltInFictitiousFunctionIrClassFactory(
symbolTable, generatorContext.irBuiltIns, reflectionTypes)
generatorContext.irBuiltIns.functionFactory = functionIrClassFactory
val stubGenerator = DeclarationStubGenerator(
moduleDescriptor, symbolTable,
config.configuration.languageVersionSettings
)
val symbols = KonanSymbols(this, symbolTable, symbolTable.lazyWrapper, functionIrClassFactory)
val symbols = KonanSymbols(this, generatorContext.irBuiltIns, symbolTable, symbolTable.lazyWrapper, functionIrClassFactory)
val irProviderForCEnumsAndCStructs =
IrProviderForCEnumAndCStructStubs(generatorContext, interopBuiltIns, symbols)
@@ -191,6 +180,21 @@ internal val psiToIrPhase = konanUnitPhase(
exportedDependencies
)
translator.addPostprocessingStep { module ->
val pluginContext = IrPluginContext(
generatorContext.moduleDescriptor,
generatorContext.bindingContext,
generatorContext.languageVersionSettings,
generatorContext.symbolTable,
generatorContext.typeTranslator,
generatorContext.irBuiltIns,
linker = deserializer
)
pluginExtensions.forEach { extension ->
extension.generate(module, pluginContext)
}
}
var dependenciesCount = 0
while (true) {
// context.config.librariesWithDependencies could change at each iteration.
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
@@ -42,10 +43,11 @@ internal class KonanIr(context: Context, irModule: IrModuleFragment): Ir<Context
internal class KonanSymbols(
context: Context,
irBuiltIns: IrBuiltIns,
private val symbolTable: SymbolTable,
lazySymbolTable: ReferenceSymbolTable,
val functionIrClassFactory: BuiltInFictitiousFunctionIrClassFactory
): Symbols<Context>(context, symbolTable) {
): Symbols<Context>(context, irBuiltIns, symbolTable) {
val entryPoint = findMainEntryPoint(context)?.let { symbolTable.referenceSimpleFunction(it) }