Fix to KonanIrlinker usage: adds TranslationContext
(cherry picked from commit dc32426a6fda9f79a617e21790b4fb69693afec0)
This commit is contained in:
committed by
Vasily Levchenko
parent
fc4602ddc8
commit
e85e87620c
+18
-3
@@ -21,13 +21,14 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
|||||||
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.ir.builders.TranslationPluginContext
|
||||||
|
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
|
||||||
import org.jetbrains.kotlin.ir.util.noUnboundLeft
|
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||||
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.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.utils.DFS
|
import org.jetbrains.kotlin.utils.DFS
|
||||||
|
|
||||||
internal fun Context.psiToIr(symbolTable: SymbolTable) {
|
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 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 =
|
val linker =
|
||||||
KonanIrLinker(
|
KonanIrLinker(
|
||||||
moduleDescriptor,
|
moduleDescriptor,
|
||||||
functionIrClassFactory,
|
functionIrClassFactory,
|
||||||
|
translationContext,
|
||||||
this as LoggingContext,
|
this as LoggingContext,
|
||||||
generatorContext.irBuiltIns,
|
generatorContext.irBuiltIns,
|
||||||
symbolTable,
|
symbolTable,
|
||||||
|
|||||||
-2
@@ -92,8 +92,6 @@ internal class KonanIrLinker(
|
|||||||
override fun isBuiltInModule(moduleDescriptor: ModuleDescriptor): Boolean = moduleDescriptor.isNativeStdlib()
|
override fun isBuiltInModule(moduleDescriptor: ModuleDescriptor): Boolean = moduleDescriptor.isNativeStdlib()
|
||||||
|
|
||||||
override val fakeOverrideBuilder = FakeOverrideBuilder(symbolTable, IdSignatureSerializer(KonanManglerIr), builtIns, KonanFakeOverrideClassFilter)
|
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) }
|
private val forwardDeclarationDeserializer = forwardModuleDescriptor?.let { KonanForwardDeclarationModuleDeserializer(it) }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user