Add initialization of constantValueGenerator for correct work
Exception was thrown from serialization plugin after compiler refactoring
This commit is contained in:
+5
@@ -29,6 +29,11 @@ import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializableProperty
|
|||||||
|
|
||||||
val BackendContext.externalSymbols: ReferenceSymbolTable get() = ir.symbols.externalSymbolTable
|
val BackendContext.externalSymbols: ReferenceSymbolTable get() = ir.symbols.externalSymbolTable
|
||||||
|
|
||||||
|
internal fun BackendContext.createTypeTranslator(moduleDescriptor: ModuleDescriptor): TypeTranslator =
|
||||||
|
TypeTranslator(externalSymbols, irBuiltIns.languageVersionSettings).apply {
|
||||||
|
constantValueGenerator = ConstantValueGenerator(moduleDescriptor, symbolTable = externalSymbols)
|
||||||
|
}
|
||||||
|
|
||||||
interface IrBuilderExtension {
|
interface IrBuilderExtension {
|
||||||
val compilerContext: BackendContext
|
val compilerContext: BackendContext
|
||||||
val translator: TypeTranslator
|
val translator: TypeTranslator
|
||||||
|
|||||||
+2
-1
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.ir.expressions.IrExpression
|
|||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.ir.util.TypeTranslator
|
import org.jetbrains.kotlin.ir.util.TypeTranslator
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.backend.common.SerializableCompanionCodegen
|
import org.jetbrains.kotlinx.serialization.compiler.backend.common.SerializableCompanionCodegen
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.resolve.classSerializer
|
import org.jetbrains.kotlinx.serialization.compiler.resolve.classSerializer
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.resolve.getSerializableClassDescriptorByCompanion
|
import org.jetbrains.kotlinx.serialization.compiler.resolve.getSerializableClassDescriptorByCompanion
|
||||||
@@ -20,7 +21,7 @@ class SerializableCompanionIrGenerator(
|
|||||||
override val compilerContext: BackendContext,
|
override val compilerContext: BackendContext,
|
||||||
bindingContext: BindingContext
|
bindingContext: BindingContext
|
||||||
) : SerializableCompanionCodegen(irClass.descriptor), IrBuilderExtension {
|
) : SerializableCompanionCodegen(irClass.descriptor), IrBuilderExtension {
|
||||||
override val translator: TypeTranslator = TypeTranslator(compilerContext.externalSymbols, compilerContext.irBuiltIns.languageVersionSettings)
|
override val translator: TypeTranslator = compilerContext.createTypeTranslator(serializableDescriptor.module)
|
||||||
private val _table = SymbolTable()
|
private val _table = SymbolTable()
|
||||||
override val BackendContext.localSymbolTable: SymbolTable
|
override val BackendContext.localSymbolTable: SymbolTable
|
||||||
get() = _table
|
get() = _table
|
||||||
|
|||||||
+2
-1
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.ir.util.constructors
|
|||||||
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
|
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassOrAny
|
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassOrAny
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.backend.common.SerializableCodegen
|
import org.jetbrains.kotlinx.serialization.compiler.backend.common.SerializableCodegen
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames.MISSING_FIELD_EXC
|
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames.MISSING_FIELD_EXC
|
||||||
@@ -30,7 +31,7 @@ class SerializableIrGenerator(
|
|||||||
override val compilerContext: BackendContext,
|
override val compilerContext: BackendContext,
|
||||||
bindingContext: BindingContext
|
bindingContext: BindingContext
|
||||||
) : SerializableCodegen(irClass.descriptor, bindingContext), IrBuilderExtension {
|
) : SerializableCodegen(irClass.descriptor, bindingContext), IrBuilderExtension {
|
||||||
override val translator: TypeTranslator = TypeTranslator(compilerContext.externalSymbols, compilerContext.irBuiltIns.languageVersionSettings)
|
override val translator: TypeTranslator = compilerContext.createTypeTranslator(serializableDescriptor.module)
|
||||||
private val _table = SymbolTable()
|
private val _table = SymbolTable()
|
||||||
override val BackendContext.localSymbolTable: SymbolTable
|
override val BackendContext.localSymbolTable: SymbolTable
|
||||||
get() = _table
|
get() = _table
|
||||||
|
|||||||
+2
-1
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.types.*
|
|||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
|
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.backend.common.SerializerCodegen
|
import org.jetbrains.kotlinx.serialization.compiler.backend.common.SerializerCodegen
|
||||||
@@ -46,7 +47,7 @@ object SERIALIZABLE_PLUGIN_ORIGIN : IrDeclarationOriginImpl("SERIALIZER")
|
|||||||
class SerializerIrGenerator(val irClass: IrClass, override val compilerContext: BackendContext, bindingContext: BindingContext) :
|
class SerializerIrGenerator(val irClass: IrClass, override val compilerContext: BackendContext, bindingContext: BindingContext) :
|
||||||
SerializerCodegen(irClass.descriptor, bindingContext), IrBuilderExtension {
|
SerializerCodegen(irClass.descriptor, bindingContext), IrBuilderExtension {
|
||||||
|
|
||||||
override val translator: TypeTranslator = TypeTranslator(compilerContext.externalSymbols, compilerContext.irBuiltIns.languageVersionSettings)
|
override val translator: TypeTranslator = compilerContext.createTypeTranslator(serializableDescriptor.module)
|
||||||
private val _table = SymbolTable()
|
private val _table = SymbolTable()
|
||||||
override val BackendContext.localSymbolTable: SymbolTable
|
override val BackendContext.localSymbolTable: SymbolTable
|
||||||
get() = _table
|
get() = _table
|
||||||
|
|||||||
Reference in New Issue
Block a user