[IR] Corresponding Fix K/N for plugin api changes
(cherry picked from commit 17206bf464b987c1d1f2763477076de72889822e)
This commit is contained in:
committed by
Vasily Levchenko
parent
2629c44a34
commit
c8694b90b3
+19
-15
@@ -23,12 +23,14 @@ import org.jetbrains.kotlin.descriptors.*
|
|||||||
import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin
|
import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin
|
||||||
import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin
|
import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin
|
||||||
import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib
|
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.IrFile
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
||||||
import org.jetbrains.kotlin.utils.DFS
|
import org.jetbrains.kotlin.utils.DFS
|
||||||
@@ -147,20 +149,6 @@ internal val psiToIrPhase = konanUnitPhase(
|
|||||||
|
|
||||||
val pluginExtensions = IrGenerationExtension.getInstances(config.project)
|
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 forwardDeclarationsModuleDescriptor = moduleDescriptor.allDependencyModules.firstOrNull { it.isForwardDeclarationModule }
|
||||||
|
|
||||||
val modulesWithoutDCE = moduleDescriptor.allDependencyModules
|
val modulesWithoutDCE = moduleDescriptor.allDependencyModules
|
||||||
@@ -171,11 +159,12 @@ internal val psiToIrPhase = konanUnitPhase(
|
|||||||
val exportedDependencies = (getExportedDependencies() + modulesWithoutDCE).distinct()
|
val exportedDependencies = (getExportedDependencies() + modulesWithoutDCE).distinct()
|
||||||
val functionIrClassFactory = BuiltInFictitiousFunctionIrClassFactory(
|
val functionIrClassFactory = BuiltInFictitiousFunctionIrClassFactory(
|
||||||
symbolTable, generatorContext.irBuiltIns, reflectionTypes)
|
symbolTable, generatorContext.irBuiltIns, reflectionTypes)
|
||||||
|
generatorContext.irBuiltIns.functionFactory = functionIrClassFactory
|
||||||
val stubGenerator = DeclarationStubGenerator(
|
val stubGenerator = DeclarationStubGenerator(
|
||||||
moduleDescriptor, symbolTable,
|
moduleDescriptor, symbolTable,
|
||||||
config.configuration.languageVersionSettings
|
config.configuration.languageVersionSettings
|
||||||
)
|
)
|
||||||
val symbols = KonanSymbols(this, symbolTable, symbolTable.lazyWrapper, functionIrClassFactory)
|
val symbols = KonanSymbols(this, generatorContext.irBuiltIns, symbolTable, symbolTable.lazyWrapper, functionIrClassFactory)
|
||||||
|
|
||||||
val irProviderForCEnumsAndCStructs =
|
val irProviderForCEnumsAndCStructs =
|
||||||
IrProviderForCEnumAndCStructStubs(generatorContext, interopBuiltIns, symbols)
|
IrProviderForCEnumAndCStructStubs(generatorContext, interopBuiltIns, symbols)
|
||||||
@@ -191,6 +180,21 @@ internal val psiToIrPhase = konanUnitPhase(
|
|||||||
exportedDependencies
|
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
|
var dependenciesCount = 0
|
||||||
while (true) {
|
while (true) {
|
||||||
// context.config.librariesWithDependencies could change at each iteration.
|
// context.config.librariesWithDependencies could change at each iteration.
|
||||||
|
|||||||
+3
-1
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings
|
|||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
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.IrClassSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
@@ -42,10 +43,11 @@ internal class KonanIr(context: Context, irModule: IrModuleFragment): Ir<Context
|
|||||||
|
|
||||||
internal class KonanSymbols(
|
internal class KonanSymbols(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
irBuiltIns: IrBuiltIns,
|
||||||
private val symbolTable: SymbolTable,
|
private val symbolTable: SymbolTable,
|
||||||
lazySymbolTable: ReferenceSymbolTable,
|
lazySymbolTable: ReferenceSymbolTable,
|
||||||
val functionIrClassFactory: BuiltInFictitiousFunctionIrClassFactory
|
val functionIrClassFactory: BuiltInFictitiousFunctionIrClassFactory
|
||||||
): Symbols<Context>(context, symbolTable) {
|
): Symbols<Context>(context, irBuiltIns, symbolTable) {
|
||||||
|
|
||||||
val entryPoint = findMainEntryPoint(context)?.let { symbolTable.referenceSimpleFunction(it) }
|
val entryPoint = findMainEntryPoint(context)?.let { symbolTable.referenceSimpleFunction(it) }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user