diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto index 7de0e17f87e..d434ce8b27c 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto @@ -253,6 +253,7 @@ message IrClass { message IrEnumEntry { optional IrExpression initializer = 1; + optional IrDeclaration corresponding_class = 2; } message IrDeclarator { diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializeIr.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializeIr.kt index aa01e8200ff..198466d821a 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializeIr.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializeIr.kt @@ -493,6 +493,10 @@ internal class IrSerializer(val context: Context, if (initializer != null) { proto.setInitializer(serializeExpression(initializer)) } + val correspondingClass = enumEntry.correspondingClass + if (correspondingClass != null) { + proto.setCorrespondingClass(serializeDeclaration(correspondingClass)) + } return proto.build() } @@ -984,9 +988,12 @@ internal class IrDeserializer(val context: Context, start: Int, end: Int, origin: IrDeclarationOrigin): IrEnumEntry { val enumEntry = IrEnumEntryImpl(start, end, origin, descriptor) - // TODO: we need to pass down the enclosing declaration. - //enumEntry.correspondingClass = ??? - enumEntry.initializerExpression = deserializeExpression(proto.initializer) + if (proto.hasCorrespondingClass()) { + enumEntry.correspondingClass = deserializeDeclaration(proto.correspondingClass) as IrClass + } + if (proto.hasInitializer()) { + enumEntry.initializerExpression = deserializeExpression(proto.initializer) + } return enumEntry }