mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-03-10 08:31:29 +00:00
Use correct return type for constructor call when creating EnumDescriptor
Previous one was converted using obsolete API, which caused unbound symbols to appear. #KT-41321 Fixed
This commit is contained in:
@@ -74,18 +74,18 @@ class SerializerForEnumsGenerator(
|
||||
+irReturn(getValueByOrdinal)
|
||||
}
|
||||
|
||||
override val serialDescImplClass: ClassDescriptor = serializerDescriptor
|
||||
.getClassFromInternalSerializationPackage(SerialEntityNames.SERIAL_DESCRIPTOR_FOR_ENUM)
|
||||
|
||||
override fun IrBlockBodyBuilder.instantiateNewDescriptor(
|
||||
serialDescImplClass: ClassDescriptor,
|
||||
correctThis: IrExpression
|
||||
): IrExpression {
|
||||
val serialDescForEnums = serializerDescriptor
|
||||
.getClassFromInternalSerializationPackage(SerialEntityNames.SERIAL_DESCRIPTOR_FOR_ENUM)
|
||||
val ctor = compilerContext.referenceConstructors(serialDescForEnums.fqNameSafe).single { it.owner.isPrimary }
|
||||
val ctor = compilerContext.referenceConstructors(serialDescImplClass.fqNameSafe).single { it.owner.isPrimary }
|
||||
return irInvoke(
|
||||
null, ctor,
|
||||
irString(serialName),
|
||||
irInt(serializableDescriptor.enumEntries().size),
|
||||
typeHint = ctor.descriptor.returnType.toIrType()
|
||||
irInt(serializableDescriptor.enumEntries().size)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -51,11 +51,11 @@ open class SerializerIrGenerator(val irClass: IrClass, final override val compil
|
||||
protected val irAnySerialDescProperty = anySerialDescProperty?.let { compilerContext.symbolTable.referenceProperty(it) }
|
||||
|
||||
|
||||
override fun generateSerialDesc() {
|
||||
val desc: PropertyDescriptor = generatedSerialDescPropertyDescriptor ?: return
|
||||
val serialDescImplClass = serializerDescriptor
|
||||
protected open val serialDescImplClass: ClassDescriptor = serializerDescriptor
|
||||
.getClassFromInternalSerializationPackage(SERIAL_DESCRIPTOR_CLASS_IMPL)
|
||||
|
||||
override fun generateSerialDesc() {
|
||||
val desc: PropertyDescriptor = generatedSerialDescPropertyDescriptor ?: return
|
||||
val addFuncS = serialDescImplClass.referenceMethod(CallingConventions.addElement)
|
||||
|
||||
val thisAsReceiverParameter = irClass.thisReceiver!!
|
||||
|
||||
Reference in New Issue
Block a user