Support serialization of java enum classes in IR
Fixes Kotlin/kotlinx.serialization#1334
This commit is contained in:
+3
-2
@@ -663,8 +663,9 @@ interface IrBuilderExtension {
|
|||||||
fun findEnumValuesMethod(enumClass: ClassDescriptor): IrFunction {
|
fun findEnumValuesMethod(enumClass: ClassDescriptor): IrFunction {
|
||||||
assert(enumClass.kind == ClassKind.ENUM_CLASS)
|
assert(enumClass.kind == ClassKind.ENUM_CLASS)
|
||||||
return compilerContext.referenceClass(enumClass.fqNameSafe)?.let {
|
return compilerContext.referenceClass(enumClass.fqNameSafe)?.let {
|
||||||
it.owner.functions.find { it.origin == IrDeclarationOrigin.ENUM_CLASS_SPECIAL_MEMBER && it.name == Name.identifier("values") }
|
it.owner.functions.singleOrNull { f ->
|
||||||
?: throw AssertionError("Enum class does not have .values() function")
|
f.name == Name.identifier("values") && f.valueParameters.isEmpty() && f.extensionReceiverParameter == null
|
||||||
|
} ?: throw AssertionError("Enum class does not have single .values() function")
|
||||||
} ?: error("Couldn't load class $enumClass")
|
} ?: error("Couldn't load class $enumClass")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user