JVM: ensure the $ENTRIES field is initialized before use
#KT-57784 Fixed
This commit is contained in:
committed by
Alexander Udalov
parent
79599ab69e
commit
7b4e6bae0e
+6
@@ -16649,6 +16649,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesFromJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesInCompanion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesMultimodule.kt")
|
||||
public void testEnumEntriesMultimodule() throws Exception {
|
||||
|
||||
+6
@@ -16649,6 +16649,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesFromJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesInCompanion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesMultimodule.kt")
|
||||
public void testEnumEntriesMultimodule() throws Exception {
|
||||
|
||||
+3
-2
@@ -34,8 +34,9 @@ class StaticInitializersLowering(override val context: JvmBackendContext) : Init
|
||||
JvmLoweredDeclarationOrigin.GENERATED_PROPERTY_REFERENCE -> 1
|
||||
IrDeclarationOrigin.FIELD_FOR_ENUM_ENTRY -> 2
|
||||
IrDeclarationOrigin.FIELD_FOR_ENUM_VALUES -> 3
|
||||
IrDeclarationOrigin.FIELD_FOR_OBJECT_INSTANCE -> 4
|
||||
else -> 5
|
||||
IrDeclarationOrigin.FIELD_FOR_ENUM_ENTRIES -> 4
|
||||
IrDeclarationOrigin.FIELD_FOR_OBJECT_INSTANCE -> 5
|
||||
else -> 6
|
||||
}
|
||||
}
|
||||
irClass.addFunction {
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
// !LANGUAGE: +EnumEntries
|
||||
// IGNORE_BACKEND: JVM, JS
|
||||
// WITH_STDLIB
|
||||
|
||||
enum class MyEnum {
|
||||
OK, NOPE;
|
||||
|
||||
companion object {
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
val ok = entries[0]
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return MyEnum.ok.toString()
|
||||
}
|
||||
+6
@@ -16295,6 +16295,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesInCompanion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesMultimoduleNoMappings.kt")
|
||||
public void testEnumEntriesMultimoduleNoMappings() throws Exception {
|
||||
|
||||
+6
@@ -16649,6 +16649,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesFromJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesInCompanion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesMultimodule.kt")
|
||||
public void testEnumEntriesMultimodule() throws Exception {
|
||||
|
||||
+6
@@ -16649,6 +16649,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesFromJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesInCompanion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesMultimodule.kt")
|
||||
public void testEnumEntriesMultimodule() throws Exception {
|
||||
|
||||
+5
@@ -13366,6 +13366,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void ignoreEnumEntriesInCompanion() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesInCompanion.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("enumEntriesMultimoduleNoMappings.kt")
|
||||
public void ignoreEnumEntriesMultimoduleNoMappings() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesMultimoduleNoMappings.kt");
|
||||
|
||||
Reference in New Issue
Block a user