JVM: support enumEntries intrinsic for Kotlin enums

Implementation is very similar to the `enumValues` intrinsic.

Java enums and old (pre-1.9) Kotlin enums will be supported in a
subsequent commit.

 #KT-59710
This commit is contained in:
Alexander Udalov
2023-07-19 16:08:36 +02:00
committed by Space Team
parent c94c5a7d58
commit 874d1c514a
36 changed files with 652 additions and 4 deletions
@@ -90,6 +90,8 @@ public class AsmTypes {
public static final Type DEFAULT_CONSTRUCTOR_MARKER = Type.getObjectType("kotlin/jvm/internal/DefaultConstructorMarker");
public static final Type ENUM_ENTRIES = Type.getObjectType("kotlin/enums/EnumEntries");
@NotNull
private static Type reflect(@NotNull String className) {
return Type.getObjectType("kotlin/reflect/" + className);
@@ -359,6 +359,16 @@ class ReifiedTypeInliner<KT : KotlinTypeMarker>(
val desc = getSpecialEnumFunDescriptor(parameter, false)
instructions.insert(insn, MethodInsnNode(Opcodes.INVOKESTATIC, parameter.internalName, "values", desc, false))
return true
} else if (next1.opcode == Opcodes.ACONST_NULL && next2.opcode == Opcodes.CHECKCAST) {
instructions.remove(next1)
instructions.remove(next2)
// TODO: support enumEntries for Java enums.
instructions.insert(
insn, MethodInsnNode(
Opcodes.INVOKESTATIC, parameter.internalName, "getEntries", Type.getMethodDescriptor(AsmTypes.ENUM_ENTRIES), false
)
)
return true
}
return false
@@ -2400,6 +2400,30 @@ public class FirLightTreeBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated e
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2400,6 +2400,30 @@ public class FirLightTreeBlackBoxInlineCodegenWithIrInlinerTestGenerated extends
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2230,6 +2230,18 @@ public class FirLightTreeBytecodeTextTestGenerated extends AbstractFirLightTreeB
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesIntrinsic.kt")
public void testEnumEntriesIntrinsic() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsic.kt");
}
@Test
@TestMetadata("enumEntriesIntrinsicForJava.kt")
public void testEnumEntriesIntrinsicForJava() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsicForJava.kt");
}
@Test
@TestMetadata("enumEntriesMapping.kt")
public void testEnumEntriesMapping() throws Exception {
@@ -2400,6 +2400,30 @@ public class FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR_SERIALIZE, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2400,6 +2400,30 @@ public class FirPsiBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated extends
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2400,6 +2400,30 @@ public class FirPsiBlackBoxInlineCodegenWithIrInlinerTestGenerated extends Abstr
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2230,6 +2230,18 @@ public class FirPsiBytecodeTextTestGenerated extends AbstractFirPsiBytecodeTextT
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesIntrinsic.kt")
public void testEnumEntriesIntrinsic() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsic.kt");
}
@Test
@TestMetadata("enumEntriesIntrinsicForJava.kt")
public void testEnumEntriesIntrinsicForJava() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsicForJava.kt");
}
@Test
@TestMetadata("enumEntriesMapping.kt")
public void testEnumEntriesMapping() throws Exception {
@@ -2400,6 +2400,30 @@ public class FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated extend
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR_SERIALIZE, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -5,10 +5,7 @@
package org.jetbrains.kotlin.backend.jvm.intrinsics
import org.jetbrains.kotlin.backend.jvm.codegen.BlockInfo
import org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen
import org.jetbrains.kotlin.backend.jvm.codegen.MaterialValue
import org.jetbrains.kotlin.backend.jvm.codegen.materializedAt
import org.jetbrains.kotlin.backend.jvm.codegen.*
import org.jetbrains.kotlin.backend.jvm.ir.isReifiedTypeParameter
import org.jetbrains.kotlin.codegen.AsmUtil
import org.jetbrains.kotlin.codegen.inline.ReifiedTypeInliner
@@ -69,3 +66,23 @@ object EnumValues : IntrinsicMethod() {
private val ENUM_ARRAY_TYPE = AsmUtil.getArrayType(AsmTypes.ENUM_TYPE)
}
object EnumEntries : IntrinsicMethod() {
override fun invoke(expression: IrFunctionAccessExpression, codegen: ExpressionCodegen, data: BlockInfo) = with(codegen) {
val type = expression.getTypeArgument(0)!!
if (type.isReifiedTypeParameter) {
// Note that the inliner expects exactly the following sequence of instructions.
// <REIFIED-OPERATIONS-MARKER>
// ACONST_NULL
// CHECKCAST Lkotlin/enums/EnumEntries;
putReifiedOperationMarkerIfTypeIsReifiedParameter(type, ReifiedTypeInliner.OperationKind.ENUM_REIFIED)
mv.aconst(null)
mv.checkcast(AsmTypes.ENUM_ENTRIES)
MaterialValue(codegen, AsmTypes.ENUM_ENTRIES, expression.type)
} else {
// TODO: support enumEntries for Java enums.
mv.invokestatic(typeMapper.mapType(type).internalName, "getEntries", Type.getMethodDescriptor(AsmTypes.ENUM_ENTRIES), false)
MaterialValue(codegen, AsmTypes.ENUM_ENTRIES, expression.type)
}
}
}
@@ -35,6 +35,7 @@ class IrIntrinsicMethods(val irBuiltIns: IrBuiltIns, val symbols: JvmSymbols) {
private val kotlinJvmFqn = FqName("kotlin.jvm")
private val kotlinJvmInternalUnsafeFqn = FqName("kotlin.jvm.internal.unsafe")
private val kotlinReflectFqn = StandardNames.KOTLIN_REFLECT_FQ_NAME
private val kotlinEnumsFqn = FqName("kotlin.enums")
private val anyFqn = StandardNames.FqNames.any.toSafe()
private val arrayFqn = StandardNames.FqNames.array.toSafe()
@@ -56,6 +57,7 @@ class IrIntrinsicMethods(val irBuiltIns: IrBuiltIns, val symbols: JvmSymbols) {
Key(cloneableFqn, null, "clone", emptyList()) to Clone,
Key(kotlinFqn, null, "enumValues", listOf()) to EnumValues,
Key(kotlinFqn, null, "enumValueOf", listOf(stringFqn)) to EnumValueOf,
Key(kotlinEnumsFqn, null, "enumEntries", listOf()) to EnumEntries,
Key(kotlinFqn, stringFqn, "plus", listOf(anyFqn)) to StringPlus,
Key(kotlinReflectFqn, null, "typeOf", listOf()) to TypeOf,
irBuiltIns.eqeqSymbol.toKey()!! to Equals(KtTokens.EQEQ),
+29
View File
@@ -0,0 +1,29 @@
// IGNORE_BACKEND_MULTI_MODULE: JVM_MULTI_MODULE_OLD_AGAINST_IR
// NO_CHECK_LAMBDA_INLINING
// WITH_STDLIB
// !OPT_IN: kotlin.ExperimentalStdlibApi
// FILE: 1.kt
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") // TODO: remove once KT-53154 is fixed.
package test
import kotlin.enums.enumEntries
inline fun <reified T : Enum<T>> myEntries(): String {
val values = enumEntries<T>()
return values.joinToString("")
}
enum class Z {
O, K
}
// FILE: 2.kt
import test.*
fun box(): String {
return myEntries<Z>()
}
@@ -0,0 +1,32 @@
// IGNORE_BACKEND_MULTI_MODULE: JVM_MULTI_MODULE_OLD_AGAINST_IR
// WITH_STDLIB
// !OPT_IN: kotlin.ExperimentalStdlibApi
// FILE: 1.kt
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") // TODO: remove once KT-53154 is fixed.
package test
import kotlin.enums.enumEntries
inline fun <reified Y : Enum<Y>> myEntries2(): String {
val entries = { enumEntries<Y>() }.let { it() }
return entries.joinToString("")
}
inline fun <reified T : Enum<T>> myEntries(): String {
return myEntries2<T>()
}
enum class Z {
O, K
}
// FILE: 2.kt
import test.*
fun box(): String {
return myEntries<Z>()
}
@@ -0,0 +1,33 @@
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM_IR
// !OPT_IN: kotlin.ExperimentalStdlibApi
// WITH_STDLIB
// FILE: test/Z.java
package test;
public enum Z {
O, K
}
// FILE: 1.kt
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") // TODO: remove once KT-53154 is fixed.
package test
import kotlin.enums.enumEntries
inline fun <reified T : Enum<T>> myEntries(): String {
val values = enumEntries<T>()
return values.joinToString("")
}
// FILE: 2.kt
import test.*
fun box(): String {
return myEntries<Z>()
}
@@ -0,0 +1,37 @@
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM_IR
// WITH_STDLIB
// !OPT_IN: kotlin.ExperimentalStdlibApi
// FILE: test/Z.java
package test;
public enum Z {
O, K
}
// FILE: 1.kt
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") // TODO: remove once KT-53154 is fixed.
package test
import kotlin.enums.enumEntries
inline fun <reified Y : Enum<Y>> myEntries2(): String {
val entries = { enumEntries<Y>() }.let { it() }
return entries.joinToString("")
}
inline fun <reified T : Enum<T>> myEntries(): String {
return myEntries2<T>()
}
// FILE: 2.kt
import test.*
fun box(): String {
return myEntries<Z>()
}
@@ -0,0 +1,20 @@
// TARGET_BACKEND: JVM_IR
// WITH_STDLIB
// !OPT_IN: kotlin.ExperimentalStdlibApi
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") // TODO: remove once KT-53154 is fixed.
import kotlin.enums.*
enum class MyEnum {
E
}
inline fun <reified T : Enum<T>> enumEntries2(): EnumEntries<T> = enumEntries<T>()
fun foo() {
enumEntries<MyEnum>()
enumEntries2<MyEnum>()
}
// There should be one call to enumEntries in MyEnum.<clinit>.
// 1 INVOKESTATIC kotlin/enums/EnumEntriesKt.enumEntries
@@ -0,0 +1,22 @@
// TARGET_BACKEND: JVM_IR
// WITH_STDLIB
// !OPT_IN: kotlin.ExperimentalStdlibApi
// FILE: MyEnum.java
enum MyEnum {
E
}
// FILE: 1.kt
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") // TODO: remove once KT-53154 is fixed.
import kotlin.enums.*
inline fun <reified T : Enum<T>> enumEntries2(): EnumEntries<T> = enumEntries<T>()
fun foo() {
enumEntries<MyEnum>()
enumEntries2<MyEnum>()
}
// 0 INVOKESTATIC kotlin/enums/EnumEntriesKt.enumEntries
@@ -2376,6 +2376,18 @@ public class BlackBoxInlineCodegenTestGenerated extends AbstractBlackBoxInlineCo
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2376,6 +2376,18 @@ public class CompileKotlinAgainstInlineKotlinTestGenerated extends AbstractCompi
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2400,6 +2400,30 @@ public class IrBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated extends Abs
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2400,6 +2400,30 @@ public class IrBlackBoxInlineCodegenWithIrInlinerTestGenerated extends AbstractI
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2230,6 +2230,18 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest {
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesIntrinsic.kt")
public void testEnumEntriesIntrinsic() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsic.kt");
}
@Test
@TestMetadata("enumEntriesIntrinsicForJava.kt")
public void testEnumEntriesIntrinsicForJava() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsicForJava.kt");
}
@Test
@TestMetadata("enumEntriesMapping.kt")
public void testEnumEntriesMapping() throws Exception {
@@ -2400,6 +2400,30 @@ public class IrCompileKotlinAgainstInlineKotlinTestGenerated extends AbstractIrC
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2400,6 +2400,30 @@ public class IrSerializeCompileKotlinAgainstInlineKotlinTestGenerated extends Ab
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2400,6 +2400,30 @@ public class JvmIrAgainstOldBoxInlineTestGenerated extends AbstractJvmIrAgainstO
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_MULTI_MODULE_IR_AGAINST_OLD, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("javaEnumEntries.kt")
public void testJavaEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt");
}
@Test
@TestMetadata("javaEnumEntriesChainCapturedType.kt")
public void testJavaEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2376,6 +2376,18 @@ public class JvmOldAgainstIrBoxInlineTestGenerated extends AbstractJvmOldAgainst
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_MULTI_MODULE_OLD_AGAINST_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2088,6 +2088,18 @@ public class FirJsCodegenInlineTestGenerated extends AbstractFirJsCodegenInlineT
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2088,6 +2088,18 @@ public class IrJsCodegenInlineTestGenerated extends AbstractIrJsCodegenInlineTes
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2088,6 +2088,18 @@ public class IrJsES6CodegenInlineTestGenerated extends AbstractIrJsES6CodegenInl
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -43015,6 +43015,18 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -44113,6 +44113,18 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -42467,6 +42467,18 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -43016,6 +43016,18 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2088,6 +2088,18 @@ public class FirWasmCodegenBoxInlineTestGenerated extends AbstractFirWasmCodegen
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.WASM, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {
@@ -2088,6 +2088,18 @@ public class K1WasmCodegenBoxInlineTestGenerated extends AbstractK1WasmCodegenBo
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.WASM, true);
}
@Test
@TestMetadata("enumEntries.kt")
public void testEnumEntries() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntries.kt");
}
@Test
@TestMetadata("enumEntriesChainCapturedType.kt")
public void testEnumEntriesChainCapturedType() throws Exception {
runTest("compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt");
}
@Test
@TestMetadata("kt10569.kt")
public void testKt10569() throws Exception {