From 0cc48440e1de0bdf2a9f961a7c61356b1ffe4950 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Thu, 27 Jan 2022 21:10:31 +0500 Subject: [PATCH] [K/N][IR] Properly handle enums when building caches Helps to fix https://youtrack.jetbrains.com/issue/KT-50977 but not entirely --- .../kotlin/backend/konan/serialization/KonanIrlinker.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt index 6bcf4e97b23..c6e31e3c951 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt @@ -211,10 +211,13 @@ internal fun ProtoClass.findClass(irClass: IrClass, fileReader: IrLibraryFile, s for (i in 0 until this.declarationCount) { val child = this.getDeclaration(i) - if (child.declaratorCase != ProtoDeclaration.DeclaratorCase.IR_CLASS) continue - val childClass = child.irClass + val childClass = when (child.declaratorCase) { + ProtoDeclaration.DeclaratorCase.IR_CLASS -> child.irClass + ProtoDeclaration.DeclaratorCase.IR_ENUM_ENTRY -> child.irEnumEntry.correspondingClass + else -> continue + } - val name = fileReader.string(child.irClass.name) + val name = fileReader.string(childClass.name) if (name == irClass.name.asString()) { if (result == null) result = childClass