KT-62470 Keep annotations on enum entry classes
diff --git a/analysis/low-level-api-fir/testData/lazyResolve/enumEntry.txt b/analysis/low-level-api-fir/testData/lazyResolve/enumEntry.txt
index 465e91c..986a585 100644
--- a/analysis/low-level-api-fir/testData/lazyResolve/enumEntry.txt
+++ b/analysis/low-level-api-fir/testData/lazyResolve/enumEntry.txt
@@ -286,7 +286,7 @@
LAZY_super<R|kotlin/Enum<Foo>|>
}
- @R|Anno|[Types]() public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = object : R|Foo| {
+ @R|Anno|[Types]() public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = @R|Anno|[Types]() object : R|Foo| {
private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|Foo|>()
}
@@ -317,7 +317,7 @@
super<R|kotlin/Enum<Foo>|>()
}
- @R|Anno|[Types]() public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = object : R|Foo| {
+ @R|Anno|[Types]() public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = @R|Anno|[Types]() object : R|Foo| {
private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|Foo|>()
}
diff --git a/analysis/low-level-api-fir/testData/lazyResolve/enumEntryScript.txt b/analysis/low-level-api-fir/testData/lazyResolve/enumEntryScript.txt
index 43b06ca..420781e 100644
--- a/analysis/low-level-api-fir/testData/lazyResolve/enumEntryScript.txt
+++ b/analysis/low-level-api-fir/testData/lazyResolve/enumEntryScript.txt
@@ -357,7 +357,7 @@
LAZY_super<R|kotlin/Enum<Foo>|>
}
- @R|Anno|[Types]() public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = object : R|Foo| {
+ @R|Anno|[Types]() public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = @R|Anno|[Types]() object : R|Foo| {
private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|Foo|>()
}
@@ -394,7 +394,7 @@
super<R|kotlin/Enum<Foo>|>()
}
- @R|Anno|[Types]() public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = object : R|Foo| {
+ @R|Anno|[Types]() public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = @R|Anno|[Types]() object : R|Foo| {
private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|Foo|>()
}
diff --git a/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/FirNativeObjCNameChecker.kt b/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/FirNativeObjCNameChecker.kt
index 2c6c8ea..8781edb 100644
--- a/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/FirNativeObjCNameChecker.kt
+++ b/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/FirNativeObjCNameChecker.kt
@@ -40,6 +40,8 @@
private val exactName = Name.identifier("exact")
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
+ if (declaration is FirAnonymousObject && declaration.classKind == ClassKind.ENUM_ENTRY) return
+
checkDeclaration(declaration, context, reporter)
if (declaration is FirCallableDeclaration && (declaration is FirSimpleFunction || declaration is FirProperty)) {
val containingClass = context.containingDeclarations.lastOrNull() as? FirClass
diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationChecker.kt
index 4b1b7d2..5973a8c 100644
--- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationChecker.kt
+++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationChecker.kt
@@ -8,6 +8,7 @@
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.KtRealSourceElementKind
import org.jetbrains.kotlin.config.LanguageFeature
+import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget.*
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
@@ -42,6 +43,8 @@
context: CheckerContext,
reporter: DiagnosticReporter
) {
+ if (declaration is FirAnonymousObject && declaration.classKind == ClassKind.ENUM_ENTRY) return
+
if (declaration is FirDanglingModifierList) {
return
}
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeListingTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeListingTestGenerated.java
index b6a67b9..7f734c0 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeListingTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeListingTestGenerated.java
@@ -377,6 +377,12 @@
}
@Test
+ @TestMetadata("kt62470.kt")
+ public void testKt62470() throws Exception {
+ runTest("compiler/testData/codegen/bytecodeListing/annotations/kt62470.kt");
+ }
+
+ @Test
@TestMetadata("kt9320.kt")
public void testKt9320() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/annotations/kt9320.kt");
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeListingTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeListingTestGenerated.java
index 57f9530..207dc7a 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeListingTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeListingTestGenerated.java
@@ -377,6 +377,12 @@
}
@Test
+ @TestMetadata("kt62470.kt")
+ public void testKt62470() throws Exception {
+ runTest("compiler/testData/codegen/bytecodeListing/annotations/kt62470.kt");
+ }
+
+ @Test
@TestMetadata("kt9320.kt")
public void testKt9320() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/annotations/kt9320.kt");
diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/LightTreeRawFirDeclarationBuilder.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/LightTreeRawFirDeclarationBuilder.kt
index e41aeb3..f911aac 100644
--- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/LightTreeRawFirDeclarationBuilder.kt
+++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/LightTreeRawFirDeclarationBuilder.kt
@@ -814,6 +814,9 @@
scopeProvider = baseScopeProvider
symbol = FirAnonymousObjectSymbol(context.packageFqName)
status = FirDeclarationStatusImpl(Visibilities.Local, Modality.FINAL)
+ enumEntry.getChildNodesByType(MODIFIER_LIST).forEach {
+ annotations += convertAnnotationList(it)
+ }
val enumClassWrapper = ClassWrapper(
modifiers,
ClassKind.ENUM_ENTRY,
diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt
index dcbe12f..3969f58 100644
--- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt
+++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt
@@ -1423,6 +1423,7 @@
scopeProvider = this@PsiRawFirBuilder.baseScopeProvider
symbol = FirAnonymousObjectSymbol(this@PsiRawFirBuilder.context.packageFqName)
status = FirDeclarationStatusImpl(Visibilities.Local, Modality.FINAL)
+ ktEnumEntry.extractAnnotationsTo(this)
val delegatedEntrySelfType = buildResolvedTypeRef {
type =
diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.annotationOwners.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.annotationOwners.txt
index 1db80df..315574f 100644
--- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.annotationOwners.txt
+++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.annotationOwners.txt
@@ -24,10 +24,18 @@
@base()
owner -> FirEnumEntrySymbol /My.FIRST
+context -> FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /My.FIRST
+
+@base()
+owner -> FirEnumEntrySymbol /My.FIRST
context -> FirEnumEntrySymbol /My.FIRST
@base()
owner -> FirEnumEntrySymbol /My.SECOND
+context -> FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /My.SECOND
+
+@base()
+owner -> FirEnumEntrySymbol /My.SECOND
context -> FirEnumEntrySymbol /My.SECOND
@base()
@@ -119,10 +127,18 @@
@derived(IntegerLiteral(1))
owner -> FirEnumEntrySymbol /MyDerived.FIRST
+context -> FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /MyDerived.FIRST
+
+@derived(IntegerLiteral(1))
+owner -> FirEnumEntrySymbol /MyDerived.FIRST
context -> FirEnumEntrySymbol /MyDerived.FIRST
@derived(IntegerLiteral(1))
owner -> FirEnumEntrySymbol /MyDerived.SECOND
+context -> FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /MyDerived.SECOND
+
+@derived(IntegerLiteral(1))
+owner -> FirEnumEntrySymbol /MyDerived.SECOND
context -> FirEnumEntrySymbol /MyDerived.SECOND
@derived(IntegerLiteral(1))
diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.txt
index b4aa128..f4b1dee 100644
--- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.txt
+++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.txt
@@ -26,14 +26,14 @@
super<R|kotlin/Enum<My>|>()
}
- @base() public final static [ContainingClassKey=My] enum entry FIRST: R|My| = object : R|My| {
+ @base() public final static [ContainingClassKey=My] enum entry FIRST: R|My| = @base() object : R|My| {
private [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|My|>()
}
}
- @base() public final static [ContainingClassKey=My] enum entry SECOND: R|My| = object : R|My| {
+ @base() public final static [ContainingClassKey=My] enum entry SECOND: R|My| = @base() object : R|My| {
private [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|My|>()
}
@@ -89,14 +89,14 @@
super<R|kotlin/Enum<MyDerived>|>()
}
- @derived(IntegerLiteral(1)) public final static [ContainingClassKey=MyDerived] enum entry FIRST: R|MyDerived| = object : R|MyDerived| {
+ @derived(IntegerLiteral(1)) public final static [ContainingClassKey=MyDerived] enum entry FIRST: R|MyDerived| = @derived(IntegerLiteral(1)) object : R|MyDerived| {
private [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|MyDerived|>()
}
}
- @derived(IntegerLiteral(1)) public final static [ContainingClassKey=MyDerived] enum entry SECOND: R|MyDerived| = object : R|MyDerived| {
+ @derived(IntegerLiteral(1)) public final static [ContainingClassKey=MyDerived] enum entry SECOND: R|MyDerived| = @derived(IntegerLiteral(1)) object : R|MyDerived| {
private [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|MyDerived|>()
}
diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enumEntryWithAnnotations.annotationOwners.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enumEntryWithAnnotations.annotationOwners.txt
index 88dba25..709da48 100644
--- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enumEntryWithAnnotations.annotationOwners.txt
+++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enumEntryWithAnnotations.annotationOwners.txt
@@ -20,6 +20,14 @@
@Anno(String(implicit))
owner -> FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
+context -> FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
+
+@PROPERTY:Anno(String(explicit))
+owner -> FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
+context -> FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
+
+@Anno(String(implicit))
+owner -> FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
context -> FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
@PROPERTY:Anno(String(explicit))
diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enumEntryWithAnnotations.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enumEntryWithAnnotations.txt
index ae33a93..a6d8f06 100644
--- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enumEntryWithAnnotations.txt
+++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enumEntryWithAnnotations.txt
@@ -4,7 +4,7 @@
super<R|kotlin/Enum<MyEnumClass>|>()
}
- @Anno(String(implicit)) @PROPERTY:Anno(String(explicit)) public final static [ContainingClassKey=MyEnumClass] enum entry ENUM_ENTRY: R|MyEnumClass| = object : R|MyEnumClass| {
+ @Anno(String(implicit)) @PROPERTY:Anno(String(explicit)) public final static [ContainingClassKey=MyEnumClass] enum entry ENUM_ENTRY: R|MyEnumClass| = @Anno(String(implicit)) @PROPERTY:Anno(String(explicit)) object : R|MyEnumClass| {
private [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|MyEnumClass|>()
}
diff --git a/compiler/testData/codegen/bytecodeListing/annotations/kt62470.kt b/compiler/testData/codegen/bytecodeListing/annotations/kt62470.kt
new file mode 100644
index 0000000..749e1be
--- /dev/null
+++ b/compiler/testData/codegen/bytecodeListing/annotations/kt62470.kt
@@ -0,0 +1,9 @@
+@Retention(AnnotationRetention.RUNTIME)
+annotation class First
+
+enum class E {
+ @First
+ E1 {
+ fun foo() = "something"
+ }
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/bytecodeListing/annotations/kt62470.txt b/compiler/testData/codegen/bytecodeListing/annotations/kt62470.txt
new file mode 100644
index 0000000..729663e
--- /dev/null
+++ b/compiler/testData/codegen/bytecodeListing/annotations/kt62470.txt
@@ -0,0 +1,31 @@
+@First
+@kotlin.Metadata
+final class E$E1 {
+ // source: 'kt62470.kt'
+ final inner class E$E1
+ method <init>(p0: java.lang.String, p1: int): void
+ public final @org.jetbrains.annotations.NotNull method foo(): java.lang.String
+}
+
+@kotlin.Metadata
+public enum class E {
+ // source: 'kt62470.kt'
+ private synthetic final static field $ENTRIES: kotlin.enums.EnumEntries
+ private synthetic final static field $VALUES: E[]
+ public final enum static @First field E1: E
+ final inner class E$E1
+ private synthetic final static method $values(): E[]
+ static method <clinit>(): void
+ private method <init>(p0: java.lang.String, p1: int): void
+ public synthetic method <init>(p0: java.lang.String, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
+ public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
+ public static method valueOf(p0: java.lang.String): E
+ public static method values(): E[]
+}
+
+@kotlin.annotation.Retention(value=RUNTIME)
+@java.lang.annotation.Retention(value=RUNTIME)
+@kotlin.Metadata
+public annotation class First {
+ // source: 'kt62470.kt'
+}
diff --git a/compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/propertyTargetOnEnumEntry_error.kt b/compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/propertyTargetOnEnumEntry_error.kt
index 95d6cf2..94deb9c 100644
--- a/compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/propertyTargetOnEnumEntry_error.kt
+++ b/compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/propertyTargetOnEnumEntry_error.kt
@@ -1,4 +1,5 @@
// FIR_IDENTICAL
+// WITH_STDLIB
// !LANGUAGE: +ProhibitUseSiteGetTargetAnnotations
@Target(AnnotationTarget.PROPERTY) annotation class Annotation
diff --git a/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.fir.ir.txt b/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.fir.ir.txt
index b166666..9055c8c 100644
--- a/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.fir.ir.txt
+++ b/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.fir.ir.txt
@@ -48,6 +48,8 @@
init: EXPRESSION_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () declared in <root>.TestEnum.ENTRY2'
class: CLASS ENUM_ENTRY name:ENTRY2 modality:FINAL visibility:private superTypes:[<root>.TestEnum]
+ annotations:
+ TestAnn(x = "ENTRY2")
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum.ENTRY2
CONSTRUCTOR visibility:private <> () returnType:<root>.TestEnum.ENTRY2 [primary]
BLOCK_BODY
diff --git a/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.fir.kt.txt b/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.fir.kt.txt
index 5627be2..6229019 100644
--- a/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.fir.kt.txt
+++ b/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.fir.kt.txt
@@ -23,6 +23,7 @@
@TestAnn(x = "ENTRY2")
ENTRY2 = ENTRY2()
+ @TestAnn(x = "ENTRY2")
private enum entry class ENTRY2 : TestEnum {
private constructor() /* primary */ {
super/*TestEnum*/()
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java
index ff14ce9..7d44b38 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java
@@ -377,6 +377,12 @@
}
@Test
+ @TestMetadata("kt62470.kt")
+ public void testKt62470() throws Exception {
+ runTest("compiler/testData/codegen/bytecodeListing/annotations/kt62470.kt");
+ }
+
+ @Test
@TestMetadata("kt9320.kt")
public void testKt9320() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/annotations/kt9320.kt");
diff --git a/plugins/kotlinx-serialization/testData/firMembers/enums.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/enums.fir.txt
index 6b76f15..e1137ee 100644
--- a/plugins/kotlinx-serialization/testData/firMembers/enums.fir.txt
+++ b/plugins/kotlinx-serialization/testData/firMembers/enums.fir.txt
@@ -21,14 +21,14 @@
super<R|kotlin/Enum<WithNames>|>()
}
- @R|kotlinx/serialization/SerialName|(value = String(A)) public final static enum entry ENTRY1: R|WithNames| = object : R|WithNames| {
+ @R|kotlinx/serialization/SerialName|(value = String(A)) public final static enum entry ENTRY1: R|WithNames| = @R|kotlinx/serialization/SerialName|(value = String(A)) object : R|WithNames| {
private constructor(): R|<anonymous>| {
super<R|WithNames|>()
}
}
- @R|kotlinx/serialization/SerialName|(value = String(B)) public final static enum entry ENTRY2: R|WithNames| = object : R|WithNames| {
+ @R|kotlinx/serialization/SerialName|(value = String(B)) public final static enum entry ENTRY2: R|WithNames| = @R|kotlinx/serialization/SerialName|(value = String(B)) object : R|WithNames| {
private constructor(): R|<anonymous>| {
super<R|WithNames|>()
}