[JVM] Lower .entries calls on Kotlin enums

Leveraging the same mechanism with $EntriesMapping as Java enums.
Old (compiled with LV/AV < 1.8) enums are detected by looking for
static special <get-entries> method that cannot be introduced on
Kotlin enums otherwise

#KT-53236
This commit is contained in:
Vsevolod Tolstopyatov
2022-07-22 14:33:28 +02:00
committed by Space
parent a12a31ce68
commit e3bff290bd
20 changed files with 268 additions and 18 deletions
@@ -16293,6 +16293,24 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/enum/enumEntriesFromJava.kt");
}
@Test
@TestMetadata("enumEntriesMultimodule.kt")
public void testEnumEntriesMultimodule() throws Exception {
runTest("compiler/testData/codegen/box/enum/enumEntriesMultimodule.kt");
}
@Test
@TestMetadata("enumEntriesMultimoduleMultipleMappings.kt")
public void testEnumEntriesMultimoduleMultipleMappings() throws Exception {
runTest("compiler/testData/codegen/box/enum/enumEntriesMultimoduleMultipleMappings.kt");
}
@Test
@TestMetadata("enumEntriesMultimoduleMultipleMappingsForMultipleClassfiles.kt")
public void testEnumEntriesMultimoduleMultipleMappingsForMultipleClassfiles() throws Exception {
runTest("compiler/testData/codegen/box/enum/enumEntriesMultimoduleMultipleMappingsForMultipleClassfiles.kt");
}
@Test
@TestMetadata("enumEntryMembers.kt")
public void testEnumEntryMembers() throws Exception {
@@ -2200,6 +2200,18 @@ public class FirBytecodeTextTestGenerated extends AbstractFirBytecodeTextTest {
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesMapping.kt")
public void testEnumEntriesMapping() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntriesMapping.kt");
}
@Test
@TestMetadata("enumEntriesMultiMapping.kt")
public void testEnumEntriesMultiMapping() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntriesMultiMapping.kt");
}
@Test
@TestMetadata("kt18731.kt")
public void testKt18731() throws Exception {