From b5ef6c9316d4d130a34af4c818b4634bc415c411 Mon Sep 17 00:00:00 2001 From: "Aleksei.Cherepanov" Date: Fri, 16 Apr 2021 20:51:23 +0300 Subject: [PATCH] Add tests for SAM conversions Add tests for KT-45191 [JPS] Marking method as "default" in Java SAM interface doesn't affect dependencies, which was fixed in intlellij(212): cbad0d91 support kotlin-generated lambda usage #KT-45191 Fixed --- ...ntalFirJvmCompilerRunnerTestGenerated.java | 18 +++++++++++++ ...ementalJvmCompilerRunnerTestGenerated.java | 18 +++++++++++++ ...OldBackendCompilerRunnerTestGenerated.java | 18 +++++++++++++ .../build/IncrementalJvmJpsTestGenerated.java | 18 +++++++++++++ .../methodAddDefault/SamInterface.java | 3 +++ .../methodAddDefault/SamInterface.java.new | 3 +++ .../samConversions/methodAddDefault/build.log | 26 +++++++++++++++++++ .../usageWithFunctionExpression.kt | 4 +++ .../usageWithFunctionLiteral.kt | 3 +++ tests/mute-common.csv | 1 + 10 files changed, 112 insertions(+) create mode 100644 jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/SamInterface.java create mode 100644 jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/SamInterface.java.new create mode 100644 jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/build.log create mode 100644 jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/usageWithFunctionExpression.kt create mode 100644 jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/usageWithFunctionLiteral.kt diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunnerTestGenerated.java index a1a00c518e6..5bb809d749b 100644 --- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunnerTestGenerated.java +++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunnerTestGenerated.java @@ -1609,6 +1609,11 @@ public class IncrementalFirJvmCompilerRunnerTestGenerated extends AbstractIncrem KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, true); } + @TestMetadata("methodAddDefault") + public void testMethodAddDefault() throws Exception { + runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/"); + } + @TestMetadata("methodAdded") public void testMethodAdded() throws Exception { runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAdded/"); @@ -1629,6 +1634,19 @@ public class IncrementalFirJvmCompilerRunnerTestGenerated extends AbstractIncrem runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/"); } + @TestMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class MethodAddDefault extends AbstractIncrementalFirJvmCompilerRunnerTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath); + } + + public void testAllFilesPresentInMethodAddDefault() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, true); + } + } + @TestMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAdded") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java index 5b2e8fb32ff..a01ca08daee 100644 --- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java +++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java @@ -1609,6 +1609,11 @@ public class IncrementalJvmCompilerRunnerTestGenerated extends AbstractIncrement KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, true); } + @TestMetadata("methodAddDefault") + public void testMethodAddDefault() throws Exception { + runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/"); + } + @TestMetadata("methodAdded") public void testMethodAdded() throws Exception { runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAdded/"); @@ -1629,6 +1634,19 @@ public class IncrementalJvmCompilerRunnerTestGenerated extends AbstractIncrement runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/"); } + @TestMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class MethodAddDefault extends AbstractIncrementalJvmCompilerRunnerTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath); + } + + public void testAllFilesPresentInMethodAddDefault() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, true); + } + } + @TestMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAdded") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmOldBackendCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmOldBackendCompilerRunnerTestGenerated.java index 0cdd109cff5..9230da3da0d 100644 --- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmOldBackendCompilerRunnerTestGenerated.java +++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmOldBackendCompilerRunnerTestGenerated.java @@ -1609,6 +1609,11 @@ public class IncrementalJvmOldBackendCompilerRunnerTestGenerated extends Abstrac KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM, true); } + @TestMetadata("methodAddDefault") + public void testMethodAddDefault() throws Exception { + runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/"); + } + @TestMetadata("methodAdded") public void testMethodAdded() throws Exception { runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAdded/"); @@ -1629,6 +1634,19 @@ public class IncrementalJvmOldBackendCompilerRunnerTestGenerated extends Abstrac runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/"); } + @TestMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class MethodAddDefault extends AbstractIncrementalJvmOldBackendCompilerRunnerTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath); + } + + public void testAllFilesPresentInMethodAddDefault() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM, true); + } + } + @TestMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAdded") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJvmJpsTestGenerated.java b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJvmJpsTestGenerated.java index 6e131cece88..65084861605 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJvmJpsTestGenerated.java +++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJvmJpsTestGenerated.java @@ -1800,6 +1800,11 @@ public class IncrementalJvmJpsTestGenerated extends AbstractIncrementalJvmJpsTes KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, true); } + @TestMetadata("methodAddDefault") + public void testMethodAddDefault() throws Exception { + runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/"); + } + @TestMetadata("methodAdded") public void testMethodAdded() throws Exception { runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAdded/"); @@ -1820,6 +1825,19 @@ public class IncrementalJvmJpsTestGenerated extends AbstractIncrementalJvmJpsTes runTest("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/"); } + @TestMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class MethodAddDefault extends AbstractIncrementalJvmJpsTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath); + } + + public void testAllFilesPresentInMethodAddDefault() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, true); + } + } + @TestMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAdded") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/SamInterface.java b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/SamInterface.java new file mode 100644 index 00000000000..840d39f109a --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/SamInterface.java @@ -0,0 +1,3 @@ +public interface SamInterface { + void run(); +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/SamInterface.java.new b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/SamInterface.java.new new file mode 100644 index 00000000000..e770cb0f72b --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/SamInterface.java.new @@ -0,0 +1,3 @@ +public interface SamInterface { + default void run() {} +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/build.log b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/build.log new file mode 100644 index 00000000000..79032a5fcae --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/build.log @@ -0,0 +1,26 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/SamInterface.class +End of files +Exit code: NOTHING_DONE +------------------------------------------ +Compiling files: + src/SamInterface.java +End of files +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/UsageWithFunctionExpressionKt$sam$SamInterface$0.class + out/production/module/UsageWithFunctionExpressionKt$usageWithFunctionExpression$a$1.class + out/production/module/UsageWithFunctionExpressionKt.class + out/production/module/UsageWithFunctionLiteralKt.class +End of files +Compiling files: + src/usageWithFunctionExpression.kt + src/usageWithFunctionLiteral.kt +End of files +Exit code: ABORT +------------------------------------------ +COMPILATION FAILED +Interface SamInterface does not have constructors +Interface SamInterface does not have constructors \ No newline at end of file diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/usageWithFunctionExpression.kt b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/usageWithFunctionExpression.kt new file mode 100644 index 00000000000..816be9e8aca --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/usageWithFunctionExpression.kt @@ -0,0 +1,4 @@ +fun usageWithFunctionExpression() { + val a = { println("Hi!") } + SamInterface(a) +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/usageWithFunctionLiteral.kt b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/usageWithFunctionLiteral.kt new file mode 100644 index 00000000000..84f2289b91f --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddDefault/usageWithFunctionLiteral.kt @@ -0,0 +1,3 @@ +fun usageWithFunctionLiteral() { + SamInterface { println("Hi!") } +} \ No newline at end of file diff --git a/tests/mute-common.csv b/tests/mute-common.csv index b0f4c34a1fa..4fe4fd0d3e9 100644 --- a/tests/mute-common.csv +++ b/tests/mute-common.csv @@ -108,3 +108,4 @@ org.jetbrains.kotlin.jps.build.IncrementalJvmJpsTestGenerated.WithJava.JavaUsedI org.jetbrains.kotlin.jps.build.IncrementalJvmJpsTestGenerated.WithJava.JavaUsedInKotlin.SamConversions.testMethodAddedSamAdapter, KT-44844 fixed in IDEA 212,, org.jetbrains.kotlin.jps.build.IncrementalJvmJpsTestGenerated.WithJava.JavaUsedInKotlin.SamConversions.testMethodSignatureChanged, KT-44844 fixed in IDEA 212,, org.jetbrains.kotlin.jps.build.IncrementalJvmJpsTestGenerated.WithJava.JavaUsedInKotlin.SamConversions.testMethodSignatureChangedSamAdapter, KT-44844 fixed in IDEA 212,, +org.jetbrains.kotlin.jps.build.IncrementalJvmJpsTestGenerated.WithJava.JavaUsedInKotlin.SamConversions.testMethodAddDefault, KT-45191 fixed in IDEA 212,, \ No newline at end of file