Skip to content

Commit 28535aa

Browse files
committed
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 (cherry picked from commit c881347)
1 parent 3039024 commit 28535aa

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerForEnumsGenerator.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,18 +77,18 @@ class SerializerForEnumsGenerator(
7777
+irReturn(getValueByOrdinal)
7878
}
7979

80+
override val serialDescImplClass: ClassDescriptor = serializerDescriptor
81+
.getClassFromInternalSerializationPackage(SerialEntityNames.SERIAL_DESCRIPTOR_FOR_ENUM)
82+
8083
override fun IrBlockBodyBuilder.instantiateNewDescriptor(
8184
serialDescImplClass: ClassDescriptor,
8285
correctThis: IrExpression
8386
): IrExpression {
84-
val serialDescForEnums = serializerDescriptor
85-
.getClassFromInternalSerializationPackage(SerialEntityNames.SERIAL_DESCRIPTOR_FOR_ENUM)
86-
val ctor = compilerContext.referenceConstructors(serialDescForEnums.fqNameSafe).single { it.owner.isPrimary }
87+
val ctor = compilerContext.referenceConstructors(serialDescImplClass.fqNameSafe).single { it.owner.isPrimary }
8788
return irInvoke(
8889
null, ctor,
8990
irString(serialName),
90-
irInt(serializableDescriptor.enumEntries().size),
91-
typeHint = ctor.descriptor.returnType.toIrType()
91+
irInt(serializableDescriptor.enumEntries().size)
9292
)
9393
}
9494

plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ open class SerializerIrGenerator(val irClass: IrClass, final override val compil
5252
protected val irAnySerialDescProperty = anySerialDescProperty?.let { compilerContext.symbolTable.referenceProperty(it) }
5353

5454

55-
override fun generateSerialDesc() {
56-
val desc: PropertyDescriptor = generatedSerialDescPropertyDescriptor ?: return
57-
val serialDescImplClass = serializerDescriptor
55+
protected open val serialDescImplClass: ClassDescriptor = serializerDescriptor
5856
.getClassFromInternalSerializationPackage(SERIAL_DESCRIPTOR_CLASS_IMPL)
5957

58+
override fun generateSerialDesc() {
59+
val desc: PropertyDescriptor = generatedSerialDescPropertyDescriptor ?: return
6060
val addFuncS = serialDescImplClass.referenceMethod(CallingConventions.addElement)
6161

6262
val thisAsReceiverParameter = irClass.thisReceiver!!

0 commit comments

Comments
 (0)