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:
+5
-5
@@ -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()
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -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!!
|
||||||
|
|||||||
Reference in New Issue
Block a user