From 3c5e556ba68c2da9ece0ef3e09a281f8ee164fbe Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Mon, 2 Jan 2023 08:36:01 +0100 Subject: [PATCH] Add "hasEnumEntries" flag to class metadata With this flag we can distinguish enum classes that have `entries` property in the compiled bytecode (see `LanguageFeature.EnumEntries`). This is needed to be able to understand in the frontend whether `entries` can be called for that class. For Native and JS, this is currently not possible even if the feature is enabled, but the class was compiled with disabled feature. ^KT-53929 Fixed --- .../test/org/jetbrains/kotlin/metadata/DebugProtoBuf.java | 8 ++++++++ core/metadata/src/metadata.proto | 1 + .../src/org/jetbrains/kotlin/metadata/ProtoBuf.java | 8 ++++++++ 3 files changed, 17 insertions(+) diff --git a/build-common/test/org/jetbrains/kotlin/metadata/DebugProtoBuf.java b/build-common/test/org/jetbrains/kotlin/metadata/DebugProtoBuf.java index 80550e0f7b2..20a8e902b58 100644 --- a/build-common/test/org/jetbrains/kotlin/metadata/DebugProtoBuf.java +++ b/build-common/test/org/jetbrains/kotlin/metadata/DebugProtoBuf.java @@ -10109,6 +10109,7 @@ public final class DebugProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ boolean hasFlags(); @@ -10126,6 +10127,7 @@ public final class DebugProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ int getFlags(); @@ -11099,6 +11101,7 @@ public final class DebugProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public boolean hasFlags() { @@ -11118,6 +11121,7 @@ public final class DebugProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public int getFlags() { @@ -12993,6 +12997,7 @@ public final class DebugProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public boolean hasFlags() { @@ -13012,6 +13017,7 @@ public final class DebugProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public int getFlags() { @@ -13031,6 +13037,7 @@ public final class DebugProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public Builder setFlags(int value) { @@ -13053,6 +13060,7 @@ public final class DebugProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public Builder clearFlags() { diff --git a/core/metadata/src/metadata.proto b/core/metadata/src/metadata.proto index 11445e45f0a..cf63f7ccb45 100644 --- a/core/metadata/src/metadata.proto +++ b/core/metadata/src/metadata.proto @@ -211,6 +211,7 @@ message Class { isExpect isInline isFun + hasEnumEntries */ optional int32 flags = 1 [default = 6 /* public final class, no annotations */]; diff --git a/core/metadata/src/org/jetbrains/kotlin/metadata/ProtoBuf.java b/core/metadata/src/org/jetbrains/kotlin/metadata/ProtoBuf.java index 5e446071ded..068391ae823 100644 --- a/core/metadata/src/org/jetbrains/kotlin/metadata/ProtoBuf.java +++ b/core/metadata/src/org/jetbrains/kotlin/metadata/ProtoBuf.java @@ -8282,6 +8282,7 @@ public final class ProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ boolean hasFlags(); @@ -8299,6 +8300,7 @@ public final class ProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ int getFlags(); @@ -9136,6 +9138,7 @@ public final class ProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public boolean hasFlags() { @@ -9155,6 +9158,7 @@ public final class ProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public int getFlags() { @@ -10721,6 +10725,7 @@ public final class ProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public boolean hasFlags() { @@ -10740,6 +10745,7 @@ public final class ProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public int getFlags() { @@ -10759,6 +10765,7 @@ public final class ProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public Builder setFlags(int value) { @@ -10781,6 +10788,7 @@ public final class ProtoBuf { *isExpect *isInline *isFun + *hasEnumEntries * */ public Builder clearFlags() {