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
@@ -74,18 +74,18 @@ class SerializerForEnumsGenerator(
+irReturn(getValueByOrdinal) +irReturn(getValueByOrdinal)
} }
override val serialDescImplClass: ClassDescriptor = serializerDescriptor
.getClassFromInternalSerializationPackage(SerialEntityNames.SERIAL_DESCRIPTOR_FOR_ENUM)
override fun IrBlockBodyBuilder.instantiateNewDescriptor( override fun IrBlockBodyBuilder.instantiateNewDescriptor(
serialDescImplClass: ClassDescriptor, serialDescImplClass: ClassDescriptor,
correctThis: IrExpression correctThis: IrExpression
): IrExpression { ): IrExpression {
val serialDescForEnums = serializerDescriptor val ctor = compilerContext.referenceConstructors(serialDescImplClass.fqNameSafe).single { it.owner.isPrimary }
.getClassFromInternalSerializationPackage(SerialEntityNames.SERIAL_DESCRIPTOR_FOR_ENUM)
val ctor = compilerContext.referenceConstructors(serialDescForEnums.fqNameSafe).single { it.owner.isPrimary }
return irInvoke( return irInvoke(
null, ctor, null, ctor,
irString(serialName), irString(serialName),
irInt(serializableDescriptor.enumEntries().size), irInt(serializableDescriptor.enumEntries().size)
typeHint = ctor.descriptor.returnType.toIrType()
) )
} }
@@ -51,11 +51,11 @@ open class SerializerIrGenerator(val irClass: IrClass, final override val compil
protected val irAnySerialDescProperty = anySerialDescProperty?.let { compilerContext.symbolTable.referenceProperty(it) } protected val irAnySerialDescProperty = anySerialDescProperty?.let { compilerContext.symbolTable.referenceProperty(it) }
override fun generateSerialDesc() { protected open val serialDescImplClass: ClassDescriptor = serializerDescriptor
val desc: PropertyDescriptor = generatedSerialDescPropertyDescriptor ?: return
val serialDescImplClass = serializerDescriptor
.getClassFromInternalSerializationPackage(SERIAL_DESCRIPTOR_CLASS_IMPL) .getClassFromInternalSerializationPackage(SERIAL_DESCRIPTOR_CLASS_IMPL)
override fun generateSerialDesc() {
val desc: PropertyDescriptor = generatedSerialDescPropertyDescriptor ?: return
val addFuncS = serialDescImplClass.referenceMethod(CallingConventions.addElement) val addFuncS = serialDescImplClass.referenceMethod(CallingConventions.addElement)
val thisAsReceiverParameter = irClass.thisReceiver!! val thisAsReceiverParameter = irClass.thisReceiver!!