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:
Leonid Startsev
2020-09-01 23:13:54 +03:00
parent 8b0bb430e7
commit c881347110
2 changed files with 8 additions and 8 deletions

View File

@@ -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)
)
}

View File

@@ -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!!