diff --git a/compiler/backend.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/AsmTypes.java b/compiler/backend.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/AsmTypes.java index 8e302fbe54e..c5188428999 100644 --- a/compiler/backend.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/AsmTypes.java +++ b/compiler/backend.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/AsmTypes.java @@ -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); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt index 4a3451afe59..185884fd875 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ReifiedTypeInliner.kt @@ -359,6 +359,16 @@ class ReifiedTypeInliner( 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 diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java index 4752aa26afe..d94ab1aea2b 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java @@ -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 { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxInlineCodegenWithIrInlinerTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxInlineCodegenWithIrInlinerTestGenerated.java index 74758e51b6d..b7197d8813c 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxInlineCodegenWithIrInlinerTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxInlineCodegenWithIrInlinerTestGenerated.java @@ -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 { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeTextTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeTextTestGenerated.java index b7a4f226f3c..2580a096eca 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeTextTestGenerated.java @@ -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 { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java index 5ffad8877b3..f2d83e4e581 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java @@ -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 { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java index 568b65c58e2..77c2e26620d 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java @@ -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 { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxInlineCodegenWithIrInlinerTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxInlineCodegenWithIrInlinerTestGenerated.java index 55f4be42981..b831cad8be2 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxInlineCodegenWithIrInlinerTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxInlineCodegenWithIrInlinerTestGenerated.java @@ -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 { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeTextTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeTextTestGenerated.java index 2b6c2960e80..24702f18cbd 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeTextTestGenerated.java @@ -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 { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java index cd78ddb2450..9bca8ab92d5 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java @@ -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 { diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/intrinsics/EnumIntrinsics.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/intrinsics/EnumIntrinsics.kt index 0c7d088e5e2..40355e87f93 100644 --- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/intrinsics/EnumIntrinsics.kt +++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/intrinsics/EnumIntrinsics.kt @@ -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. + // + // 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) + } + } +} diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/intrinsics/IrIntrinsicMethods.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/intrinsics/IrIntrinsicMethods.kt index 1d5ac665df2..3f9030e34ce 100644 --- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/intrinsics/IrIntrinsicMethods.kt +++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/intrinsics/IrIntrinsicMethods.kt @@ -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), diff --git a/compiler/testData/codegen/boxInline/enum/enumEntries.kt b/compiler/testData/codegen/boxInline/enum/enumEntries.kt new file mode 100644 index 00000000000..c2c33562f3b --- /dev/null +++ b/compiler/testData/codegen/boxInline/enum/enumEntries.kt @@ -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 > myEntries(): String { + val values = enumEntries() + return values.joinToString("") +} + +enum class Z { + O, K +} + + +// FILE: 2.kt + +import test.* + +fun box(): String { + return myEntries() +} diff --git a/compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt b/compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt new file mode 100644 index 00000000000..a3c588b352a --- /dev/null +++ b/compiler/testData/codegen/boxInline/enum/enumEntriesChainCapturedType.kt @@ -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 > myEntries2(): String { + val entries = { enumEntries() }.let { it() } + return entries.joinToString("") +} + +inline fun > myEntries(): String { + return myEntries2() +} + +enum class Z { + O, K +} + + +// FILE: 2.kt + +import test.* + +fun box(): String { + return myEntries() +} diff --git a/compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt b/compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt new file mode 100644 index 00000000000..40d89c58180 --- /dev/null +++ b/compiler/testData/codegen/boxInline/enum/javaEnumEntries.kt @@ -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 > myEntries(): String { + val values = enumEntries() + return values.joinToString("") +} + +// FILE: 2.kt + +import test.* + +fun box(): String { + return myEntries() +} diff --git a/compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt b/compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt new file mode 100644 index 00000000000..f49f89f2a72 --- /dev/null +++ b/compiler/testData/codegen/boxInline/enum/javaEnumEntriesChainCapturedType.kt @@ -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 > myEntries2(): String { + val entries = { enumEntries() }.let { it() } + return entries.joinToString("") +} + +inline fun > myEntries(): String { + return myEntries2() +} + +// FILE: 2.kt + +import test.* + +fun box(): String { + return myEntries() +} diff --git a/compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsic.kt b/compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsic.kt new file mode 100644 index 00000000000..178d6b80cc8 --- /dev/null +++ b/compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsic.kt @@ -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 > enumEntries2(): EnumEntries = enumEntries() + +fun foo() { + enumEntries() + enumEntries2() +} + +// There should be one call to enumEntries in MyEnum.. +// 1 INVOKESTATIC kotlin/enums/EnumEntriesKt.enumEntries diff --git a/compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsicForJava.kt b/compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsicForJava.kt new file mode 100644 index 00000000000..68be2497e8e --- /dev/null +++ b/compiler/testData/codegen/bytecodeText/enum/enumEntriesIntrinsicForJava.kt @@ -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 > enumEntries2(): EnumEntries = enumEntries() + +fun foo() { + enumEntries() + enumEntries2() +} + +// 0 INVOKESTATIC kotlin/enums/EnumEntriesKt.enumEntries diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxInlineCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxInlineCodegenTestGenerated.java index 596b17ee6bf..3e698e07272 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxInlineCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxInlineCodegenTestGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/CompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/CompileKotlinAgainstInlineKotlinTestGenerated.java index 14c68ba610f..03d3bc12c16 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/CompileKotlinAgainstInlineKotlinTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/CompileKotlinAgainstInlineKotlinTestGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java index 3e03d9f6b38..cbe7eeb0b3a 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenWithBytecodeInlinerTestGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenWithIrInlinerTestGenerated.java index eab8c60658c..fd5d23c3d86 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenWithIrInlinerTestGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java index 7166349dbb7..08d4542766e 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrCompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrCompileKotlinAgainstInlineKotlinTestGenerated.java index 84fbfb32472..a56421bad72 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrCompileKotlinAgainstInlineKotlinTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrCompileKotlinAgainstInlineKotlinTestGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java index 6f387e906bb..6f812b9ac75 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxInlineTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxInlineTestGenerated.java index c89284a9465..bdca8412c68 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxInlineTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxInlineTestGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxInlineTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxInlineTestGenerated.java index d3cd97cf8a0..96d6dd37821 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxInlineTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxInlineTestGenerated.java @@ -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 { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenInlineTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenInlineTestGenerated.java index 722de2c9145..423f35f3a00 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenInlineTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenInlineTestGenerated.java @@ -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 { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenInlineTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenInlineTestGenerated.java index 9df739fbe15..d29358f9b9f 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenInlineTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenInlineTestGenerated.java @@ -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 { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenInlineTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenInlineTestGenerated.java index 498b428e93e..c0ed15dc496 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenInlineTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenInlineTestGenerated.java @@ -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 { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java index e99f91f87a7..93414a902d3 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java @@ -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 { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java index 034da51ab98..0e14a2369b4 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java @@ -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 { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java index 0541be872ad..1befb700185 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java @@ -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 { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java index 35c1c686a03..6ee4a8f24ff 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java @@ -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 { diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxInlineTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxInlineTestGenerated.java index 81b735c49bb..1e86d89483e 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxInlineTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxInlineTestGenerated.java @@ -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 { diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxInlineTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxInlineTestGenerated.java index 2b69a747eb9..ca3a3395229 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxInlineTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxInlineTestGenerated.java @@ -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 {