diff --git a/core/metadata/src/org/jetbrains/kotlin/metadata/deserialization/Flags.java b/core/metadata/src/org/jetbrains/kotlin/metadata/deserialization/Flags.java index 4cf2642ce92..0534c894302 100644 --- a/core/metadata/src/org/jetbrains/kotlin/metadata/deserialization/Flags.java +++ b/core/metadata/src/org/jetbrains/kotlin/metadata/deserialization/Flags.java @@ -32,7 +32,7 @@ public class Flags { public static final BooleanFlagField IS_EXPECT_CLASS = FlagField.booleanAfter(IS_EXTERNAL_CLASS); public static final BooleanFlagField IS_VALUE_CLASS = FlagField.booleanAfter(IS_EXPECT_CLASS); public static final BooleanFlagField IS_FUN_INTERFACE = FlagField.booleanAfter(IS_VALUE_CLASS); - private static final BooleanFlagField HAS_ENUM_ENTRIES = FlagField.booleanAfter(IS_FUN_INTERFACE); + public static final BooleanFlagField HAS_ENUM_ENTRIES = FlagField.booleanAfter(IS_FUN_INTERFACE); // Constructors diff --git a/libraries/kotlinx-metadata/jvm/api/kotlinx-metadata-jvm.api b/libraries/kotlinx-metadata/jvm/api/kotlinx-metadata-jvm.api index 5f3ef71a70c..242f0489a46 100644 --- a/libraries/kotlinx-metadata/jvm/api/kotlinx-metadata-jvm.api +++ b/libraries/kotlinx-metadata/jvm/api/kotlinx-metadata-jvm.api @@ -23,6 +23,7 @@ public final class kotlinx/metadata/Flag { } public final class kotlinx/metadata/Flag$Class { + public static final field HAS_ENUM_ENTRIES Lkotlinx/metadata/Flag; public static final field INSTANCE Lkotlinx/metadata/Flag$Class; public static final field IS_ANNOTATION_CLASS Lkotlinx/metadata/Flag; public static final field IS_CLASS Lkotlinx/metadata/Flag; diff --git a/libraries/kotlinx-metadata/src/kotlinx/metadata/Flag.kt b/libraries/kotlinx-metadata/src/kotlinx/metadata/Flag.kt index 1adec0b4a50..cd09f9f5d89 100644 --- a/libraries/kotlinx-metadata/src/kotlinx/metadata/Flag.kt +++ b/libraries/kotlinx-metadata/src/kotlinx/metadata/Flag.kt @@ -224,6 +224,13 @@ class Flag(private val offset: Int, private val bitWidth: Int, private val value */ @JvmField val IS_FUN = Flag(F.IS_FUN_INTERFACE) + + /** + * Signifies that the corresponding enum class has ".entries" property in bytecode. + * Always `false` for not enum classes. + */ + @JvmField + val HAS_ENUM_ENTRIES = Flag(F.HAS_ENUM_ENTRIES) } /** diff --git a/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt b/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt index 0c5d76e5e2d..b556105241e 100644 --- a/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt +++ b/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt @@ -501,6 +501,10 @@ class ClassPrinter(private val settings: KotlinpSettings) : AbstractPrinter { + + // signature: (Ljava/lang/String;I)V + private constructor() + + ONE, + + TWO, + + // module name: test-module + + // has Enum.entries +} +// META-INF/test-module.kotlin_module +// ------------------------------------------ +module { +} diff --git a/libraries/tools/kotlinp/testData/NotEnumWithEnumEntriesEnabled.kt b/libraries/tools/kotlinp/testData/NotEnumWithEnumEntriesEnabled.kt new file mode 100644 index 00000000000..68e4ef11d0c --- /dev/null +++ b/libraries/tools/kotlinp/testData/NotEnumWithEnumEntriesEnabled.kt @@ -0,0 +1,5 @@ +// !LANGUAGE: +EnumEntries + +class UsualClass { + fun foo() {} +} \ No newline at end of file diff --git a/libraries/tools/kotlinp/testData/NotEnumWithEnumEntriesEnabled.txt b/libraries/tools/kotlinp/testData/NotEnumWithEnumEntriesEnabled.txt new file mode 100644 index 00000000000..14f1a00188b --- /dev/null +++ b/libraries/tools/kotlinp/testData/NotEnumWithEnumEntriesEnabled.txt @@ -0,0 +1,16 @@ +// UsualClass.class +// ------------------------------------------ +public final class UsualClass : kotlin/Any { + + // signature: ()V + public constructor() + + // signature: foo()V + public final fun foo(): kotlin/Unit + + // module name: test-module +} +// META-INF/test-module.kotlin_module +// ------------------------------------------ +module { +} diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/utils/MetadataDeclarationsComparator.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/utils/MetadataDeclarationsComparator.kt index 6313393a849..d0f86eaaab1 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/utils/MetadataDeclarationsComparator.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/utils/MetadataDeclarationsComparator.kt @@ -1023,7 +1023,8 @@ class MetadataDeclarationsComparator private constructor(private val config: Con Flag.Class::IS_EXTERNAL, Flag.Class::IS_EXPECT, Flag.Class::IS_VALUE, - Flag.Class::IS_FUN + Flag.Class::IS_FUN, + Flag.Class::HAS_ENUM_ENTRIES, ) private val TYPE_ALIAS_FLAGS: Array> = arrayOf(