From ad1d80d70082b0a5be6e1c615d461db81568bacc Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Tue, 26 Jan 2021 17:28:40 +0300 Subject: [PATCH] JVM_IR indy-SAM conversions: add more tests KT-44278 KT-26060 KT-42621 --- .../FirBlackBoxCodegenTestGenerated.java | 12 ++++++++++ .../codegen/FirBytecodeTextTestGenerated.java | 16 +++++++++++++ .../box/invokedynamic/sam/streamApi1.kt | 13 +++++++++++ .../box/invokedynamic/sam/streamApi2.kt | 21 +++++++++++++++++ .../bytecodeText/invokedynamic/streamApi.kt | 23 +++++++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 12 ++++++++++ .../codegen/BytecodeTextTestGenerated.java | 16 +++++++++++++ .../IrBlackBoxCodegenTestGenerated.java | 12 ++++++++++ .../codegen/IrBytecodeTextTestGenerated.java | 16 +++++++++++++ .../LightAnalysisModeTestGenerated.java | 10 ++++++++ 10 files changed, 151 insertions(+) create mode 100644 compiler/testData/codegen/box/invokedynamic/sam/streamApi1.kt create mode 100644 compiler/testData/codegen/box/invokedynamic/sam/streamApi2.kt create mode 100644 compiler/testData/codegen/bytecodeText/invokedynamic/streamApi.kt diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index 18a24e94a93..018b0c8519b 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -18481,6 +18481,18 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/invokedynamic/sam/simpleIndySam.kt"); } + @Test + @TestMetadata("streamApi1.kt") + public void testStreamApi1() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/streamApi1.kt"); + } + + @Test + @TestMetadata("streamApi2.kt") + public void testStreamApi2() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/streamApi2.kt"); + } + @Test @TestMetadata("suspendFunInterface.kt") public void testSuspendFunInterface() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java index 164c8ac8a44..115fc4cd7da 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java @@ -3923,6 +3923,22 @@ public class FirBytecodeTextTestGenerated extends AbstractFirBytecodeTextTest { } } + @Nested + @TestMetadata("compiler/testData/codegen/bytecodeText/invokedynamic") + @TestDataPath("$PROJECT_ROOT") + public class Invokedynamic extends AbstractFirBytecodeTextTest { + @Test + public void testAllFilesPresentInInvokedynamic() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeText/invokedynamic"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("streamApi.kt") + public void testStreamApi() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/invokedynamic/streamApi.kt"); + } + } + @Nested @TestMetadata("compiler/testData/codegen/bytecodeText/jvm8") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/testData/codegen/box/invokedynamic/sam/streamApi1.kt b/compiler/testData/codegen/box/invokedynamic/sam/streamApi1.kt new file mode 100644 index 00000000000..ecda6899ee7 --- /dev/null +++ b/compiler/testData/codegen/box/invokedynamic/sam/streamApi1.kt @@ -0,0 +1,13 @@ +// TARGET_BACKEND: JVM +// JVM_TARGET: 1.8 +// SAM_CONVERSIONS: INDY +// WITH_RUNTIME +// FULL_JDK +import java.util.stream.Collectors + +fun box(): String { + return listOf("o", "k") + .stream() + .map { it.toUpperCase() } + .collect(Collectors.joining()) +} \ No newline at end of file diff --git a/compiler/testData/codegen/box/invokedynamic/sam/streamApi2.kt b/compiler/testData/codegen/box/invokedynamic/sam/streamApi2.kt new file mode 100644 index 00000000000..0f0683fe00a --- /dev/null +++ b/compiler/testData/codegen/box/invokedynamic/sam/streamApi2.kt @@ -0,0 +1,21 @@ +// TARGET_BACKEND: JVM +// JVM_TARGET: 1.8 +// SAM_CONVERSIONS: INDY +// WITH_RUNTIME +// FULL_JDK +import java.util.stream.* + +fun box(): String { + val xs = IntStream.of(1, 1, 4, 5, 1, 4) + .map { a: Int -> a + 1 } + .map { a: Int -> a - 1 } + .filter { a: Int -> a > 3 } + .flatMap { a: Int -> IntStream.of(a, a, a) } + .boxed() + .collect(Collectors.toList()) + + if (xs != listOf(4, 4, 4, 5, 5, 5, 4, 4, 4)) + return "Failed: xs=$xs" + + return "OK" +} \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeText/invokedynamic/streamApi.kt b/compiler/testData/codegen/bytecodeText/invokedynamic/streamApi.kt new file mode 100644 index 00000000000..99dad35114a --- /dev/null +++ b/compiler/testData/codegen/bytecodeText/invokedynamic/streamApi.kt @@ -0,0 +1,23 @@ +// TARGET_BACKEND: JVM +// JVM_TARGET: 1.8 +// SAM_CONVERSIONS: INDY +// WITH_RUNTIME +// FULL_JDK +import java.util.stream.* + +fun test() = + IntStream.of(1, 1, 4, 5, 1, 4) + .map { a: Int -> a + 1 } + .map { a: Int -> a - 1 } + .filter { a: Int -> a > 3 } + .flatMap { a: Int -> IntStream.of(a, a, a) } + .boxed() + .collect(Collectors.toList()) + +// JVM_IR_TEMPLATES +// 4 INVOKEDYNAMIC +// 0 class StreamApiKt\$test\$ + +// JVM_TEMPLATES +// 0 INVOKEDYNAMIC +// 4 class StreamApiKt\$test\$ diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index a1281d8134a..fab16cfd3bb 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -18481,6 +18481,18 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/invokedynamic/sam/simpleIndySam.kt"); } + @Test + @TestMetadata("streamApi1.kt") + public void testStreamApi1() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/streamApi1.kt"); + } + + @Test + @TestMetadata("streamApi2.kt") + public void testStreamApi2() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/streamApi2.kt"); + } + @Test @TestMetadata("suspendFunInterface.kt") public void testSuspendFunInterface() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeTextTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeTextTestGenerated.java index ee7b88542b0..bd3bd77533e 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeTextTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeTextTestGenerated.java @@ -3791,6 +3791,22 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest { } } + @Nested + @TestMetadata("compiler/testData/codegen/bytecodeText/invokedynamic") + @TestDataPath("$PROJECT_ROOT") + public class Invokedynamic extends AbstractBytecodeTextTest { + @Test + public void testAllFilesPresentInInvokedynamic() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeText/invokedynamic"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); + } + + @Test + @TestMetadata("streamApi.kt") + public void testStreamApi() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/invokedynamic/streamApi.kt"); + } + } + @Nested @TestMetadata("compiler/testData/codegen/bytecodeText/jvm8") @TestDataPath("$PROJECT_ROOT") 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 2c8fb657361..f9254bc5b6d 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 @@ -18481,6 +18481,18 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/invokedynamic/sam/simpleIndySam.kt"); } + @Test + @TestMetadata("streamApi1.kt") + public void testStreamApi1() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/streamApi1.kt"); + } + + @Test + @TestMetadata("streamApi2.kt") + public void testStreamApi2() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/streamApi2.kt"); + } + @Test @TestMetadata("suspendFunInterface.kt") public void testSuspendFunInterface() 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 fcd726e793a..697ca637506 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 @@ -3923,6 +3923,22 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest { } } + @Nested + @TestMetadata("compiler/testData/codegen/bytecodeText/invokedynamic") + @TestDataPath("$PROJECT_ROOT") + public class Invokedynamic extends AbstractIrBytecodeTextTest { + @Test + public void testAllFilesPresentInInvokedynamic() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeText/invokedynamic"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("streamApi.kt") + public void testStreamApi() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/invokedynamic/streamApi.kt"); + } + } + @Nested @TestMetadata("compiler/testData/codegen/bytecodeText/jvm8") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 9354811bff6..02a38cf4c29 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -16203,6 +16203,16 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/invokedynamic/sam/simpleIndySam.kt"); } + @TestMetadata("streamApi1.kt") + public void testStreamApi1() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/streamApi1.kt"); + } + + @TestMetadata("streamApi2.kt") + public void testStreamApi2() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/streamApi2.kt"); + } + @TestMetadata("suspendFunInterface.kt") public void testSuspendFunInterface() throws Exception { runTest("compiler/testData/codegen/box/invokedynamic/sam/suspendFunInterface.kt");