diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index b16d8fff6e9..e796f204a5c 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -19291,13 +19291,13 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT @Test @TestMetadata("boxResultInlineClassOfConstructorCall.kt") public void testBoxResultInlineClassOfConstructorCall() throws Exception { - runTest("compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt"); + runTest("compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt", s -> s.replaceAll("OPTIONAL_JVM_INLINE_ANNOTATION", "@kotlin.jvm.JvmInline")); } @Test @TestMetadata("boxResultInlineClassOfConstructorCall.kt") - public void testBoxResultInlineClassOfConstructorCallWithoutJvmInlineAnnotation() throws Exception { - runTest("compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt", s -> s.replaceAll("@(kotlin.jvm.)?JvmInline", "")); + public void testBoxResultInlineClassOfConstructorCall_valueClasses() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt", s -> s.replaceAll("OPTIONAL_JVM_INLINE_ANNOTATION", "")); } @Test diff --git a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/TestRunner.kt b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/TestRunner.kt index c2293b2684a..60fe4fbb85c 100644 --- a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/TestRunner.kt +++ b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/TestRunner.kt @@ -26,8 +26,8 @@ class TestRunner(private val testConfiguration: TestConfiguration) { fun runTest( @TestDataFile testDataFileName: String, + expectedFileTransformer: ((String) -> String)? = null, beforeDispose: (TestConfiguration) -> Unit = {}, - expectedFileTransformer: ((String) -> String)? = null ) { try { runTestImpl(testDataFileName, expectedFileTransformer) diff --git a/compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt b/compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt index 81c3adf7af5..e2d67b49e1e 100644 --- a/compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt +++ b/compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt @@ -1,9 +1,8 @@ // WITH_STDLIB -// WORKS_WITHOUT_JVM_INLINE +// WORKS_WHEN_VALUE_CLASS // !LANGUAGE: +ValueClasses -@Suppress("OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE") -@kotlin.jvm.JvmInline +OPTIONAL_JVM_INLINE_ANNOTATION value class Result(val a: Any?) fun box(): String { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 4430fc57c20..fde6cc68682 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -19291,13 +19291,13 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes @Test @TestMetadata("boxResultInlineClassOfConstructorCall.kt") public void testBoxResultInlineClassOfConstructorCall() throws Exception { - runTest("compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt"); + runTest("compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt", s -> s.replaceAll("OPTIONAL_JVM_INLINE_ANNOTATION", "@kotlin.jvm.JvmInline")); } @Test @TestMetadata("boxResultInlineClassOfConstructorCall.kt") - public void testBoxResultInlineClassOfConstructorCallWithoutJvmInlineAnnotation() throws Exception { - runTest("compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt", s -> s.replaceAll("@(kotlin.jvm.)?JvmInline", "")); + public void testBoxResultInlineClassOfConstructorCall_valueClasses() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/boxResultInlineClassOfConstructorCall.kt", s -> s.replaceAll("OPTIONAL_JVM_INLINE_ANNOTATION", "")); } @Test diff --git a/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/WithoutJvmInlineTestMethodGenerator.kt b/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/WithoutJvmInlineTestMethodGenerator.kt index 26f3ea0ff9b..07beb115ebd 100644 --- a/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/WithoutJvmInlineTestMethodGenerator.kt +++ b/generators/test-generator/tests/org/jetbrains/kotlin/generators/impl/WithoutJvmInlineTestMethodGenerator.kt @@ -24,7 +24,8 @@ object WithoutJvmInlineTestMethodGenerator : MethodGenerator s.replaceAll(\"@(kotlin.jvm.)?JvmInline\", \"\"));") + val replacement = if (method.withAnnotation) "@kotlin.jvm.JvmInline" else "" + p.println("${RunTestMethodModel.METHOD_NAME}(\"$filePath\", s -> s.replaceAll(\"OPTIONAL_JVM_INLINE_ANNOTATION\", \"$replacement\"));") } } } diff --git a/generators/test-generator/tests/org/jetbrains/kotlin/generators/model/WithoutJvmInlineTestMethodModel.kt b/generators/test-generator/tests/org/jetbrains/kotlin/generators/model/WithoutJvmInlineTestMethodModel.kt index 693b2ae633c..03ac8bc7883 100644 --- a/generators/test-generator/tests/org/jetbrains/kotlin/generators/model/WithoutJvmInlineTestMethodModel.kt +++ b/generators/test-generator/tests/org/jetbrains/kotlin/generators/model/WithoutJvmInlineTestMethodModel.kt @@ -6,14 +6,15 @@ package org.jetbrains.kotlin.generators.model class WithoutJvmInlineTestMethodModel( - val source: SimpleTestMethodModel + val source: SimpleTestMethodModel, + val withAnnotation: Boolean ) : MethodModel { object Kind : MethodModel.Kind() override val kind: MethodModel.Kind get() = Kind override val name: String - get() = "${source.name}WithoutJvmInlineAnnotation" + get() = source.name + if (withAnnotation) "" else "_valueClasses" override val dataString: String get() = source.dataString override val tags: List diff --git a/generators/test-generator/tests/org/jetbrains/kotlin/generators/util/MethodModelLocator.kt b/generators/test-generator/tests/org/jetbrains/kotlin/generators/util/MethodModelLocator.kt index 6a524b00f64..aaaa4292aa0 100644 --- a/generators/test-generator/tests/org/jetbrains/kotlin/generators/util/MethodModelLocator.kt +++ b/generators/test-generator/tests/org/jetbrains/kotlin/generators/util/MethodModelLocator.kt @@ -12,7 +12,7 @@ import java.util.regex.Pattern fun TestEntityModel.containsWithoutJvmInline(backend: TargetBackend): Boolean = backend == TargetBackend.JVM_IR && when (this) { is ClassModel -> methods.any { it.containsWithoutJvmInline(backend) } || innerTestClasses.any { it.containsWithoutJvmInline(backend) } - is SimpleTestMethodModel -> file.readLines().any { Regex("^\\s*//\\s*WORKS_WITHOUT_JVM_INLINE\\s*$").matches(it) } + is SimpleTestMethodModel -> file.readLines().any { Regex("^\\s*//\\s*WORKS_WHEN_VALUE_CLASS\\s*$").matches(it) } else -> false } @@ -33,5 +33,6 @@ fun methodModelLocator( skipIgnored, tags ).let { methodModel -> - listOf(methodModel) + if (methodModel.containsWithoutJvmInline(targetBackend)) listOf(WithoutJvmInlineTestMethodModel(methodModel)) else emptyList() + if (methodModel.containsWithoutJvmInline(targetBackend)) listOf(true, false).map { WithoutJvmInlineTestMethodModel(methodModel, it) } + else listOf(methodModel) } \ No newline at end of file