From e85e87620c0089573a62f7fb03c0284faf1ff530 Mon Sep 17 00:00:00 2001 From: Pavel Punegov Date: Thu, 17 Sep 2020 13:25:23 +0300 Subject: [PATCH] Fix to KonanIrlinker usage: adds TranslationContext (cherry picked from commit dc32426a6fda9f79a617e21790b4fb69693afec0) --- .../jetbrains/kotlin/backend/konan/PsiToIr.kt | 21 ++++++++++++++++--- .../konan/serialization/KonanIrlinker.kt | 2 -- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt index 61384cc84c7..20e87fd4cc2 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt @@ -21,13 +21,14 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor 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.ir.builders.TranslationPluginContext +import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.symbols.IrSymbol -import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator -import org.jetbrains.kotlin.ir.util.SymbolTable -import org.jetbrains.kotlin.ir.util.noUnboundLeft +import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.ir.visitors.acceptVoid import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator +import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.utils.DFS internal fun Context.psiToIr(symbolTable: SymbolTable) { @@ -61,10 +62,24 @@ internal fun Context.psiToIr(symbolTable: SymbolTable) { val deserializeFakeOverrides = config.configuration.getBoolean(CommonConfigurationKeys.DESERIALIZE_FAKE_OVERRIDES) + val translationContext = object : TranslationPluginContext { + override val moduleDescriptor: ModuleDescriptor + get() = generatorContext.moduleDescriptor + override val bindingContext: BindingContext + get() = generatorContext.bindingContext + override val symbolTable: ReferenceSymbolTable + get() = symbolTable + override val typeTranslator: TypeTranslator + get() = generatorContext.typeTranslator + override val irBuiltIns: IrBuiltIns + get() = generatorContext.irBuiltIns + } + val linker = KonanIrLinker( moduleDescriptor, functionIrClassFactory, + translationContext, this as LoggingContext, generatorContext.irBuiltIns, symbolTable, diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt index 708a906f1bf..1a720ef24a9 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt @@ -92,8 +92,6 @@ internal class KonanIrLinker( override fun isBuiltInModule(moduleDescriptor: ModuleDescriptor): Boolean = moduleDescriptor.isNativeStdlib() override val fakeOverrideBuilder = FakeOverrideBuilder(symbolTable, IdSignatureSerializer(KonanManglerIr), builtIns, KonanFakeOverrideClassFilter) - override val translationPluginContext: TranslationPluginContext? - get() = TODO("Not yet implemented") private val forwardDeclarationDeserializer = forwardModuleDescriptor?.let { KonanForwardDeclarationModuleDeserializer(it) }