From 9d6c0e56edb2a01751df8157bf001db04eb708ac Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Sat, 30 Jan 2021 00:06:08 +0300 Subject: [PATCH] [Commonizer] Fix HAS_ANNOTATIONS flag calculation for serialized classes --- .../kotlin/descriptors/commonizer/metadata/flags.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/flags.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/flags.kt index 59f2a0bde4a..ea8a338be6f 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/flags.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/flags.kt @@ -104,6 +104,11 @@ internal fun CirTypeAlias.typeAliasFlags(): Flags = private inline val CirHasAnnotations.hasAnnotationsFlag: Flag? get() = if (annotations.isNotEmpty()) Flag.Common.HAS_ANNOTATIONS else null +// Since 1.4.30 a special @JvmInline annotation is generated to distinguish JVM-inline from value classes. +// This has an effect on class serialization: Every class with isInline == true automatically gets HAS_ANNOTATIONS flag. +private inline val CirClass.hasAnnotationsFlag: Flag? + get() = if (annotations.isNotEmpty() || isInline) Flag.Common.HAS_ANNOTATIONS else null + private inline val CirProperty.hasAnnotationsFlag: Flag? get() = if (annotations.isNotEmpty() || !backingFieldAnnotations.isNullOrEmpty() || !delegateFieldAnnotations.isNullOrEmpty()) Flag.Common.HAS_ANNOTATIONS