JVM: ensure the $ENTRIES field is initialized before use

#KT-57784 Fixed
This commit is contained in:
Xin Wang
2023-05-04 10:17:29 +08:00
committed by Alexander Udalov
parent 79599ab69e
commit 7b4e6bae0e
17 changed files with 107 additions and 2 deletions
@@ -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 {
@@ -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 {
@@ -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()
}
@@ -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 {
@@ -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 {
@@ -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 {
@@ -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");
@@ -12587,6 +12587,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
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 {
@@ -12683,6 +12683,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
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 {
@@ -12683,6 +12683,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
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 {
@@ -12683,6 +12683,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
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 {
@@ -13831,6 +13831,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
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 {
@@ -14155,6 +14155,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
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 {
@@ -13670,6 +13670,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
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 {
@@ -13832,6 +13832,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
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 {
@@ -11249,6 +11249,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
}
@TestMetadata("enumEntriesInCompanion.kt")
public void testEnumEntriesInCompanion() throws Exception {
runTest("compiler/testData/codegen/box/enum/enumEntriesInCompanion.kt");
}
@TestMetadata("enumEntriesMultimoduleNoMappings.kt")
public void testEnumEntriesMultimoduleNoMappings() throws Exception {
runTest("compiler/testData/codegen/box/enum/enumEntriesMultimoduleNoMappings.kt");