From 052f6929c9fca4ee44028d0d6f4b6f3b01b05b4f Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Fri, 5 Feb 2021 20:04:16 +0300 Subject: [PATCH] JVM_IR indy SAM conversions: update tests KT-44278 KT-26060 KT-42621 --- .../FirBlackBoxCodegenTestGenerated.java | 6 ++++ .../sam/covariantOverrideWithPrimitive.kt | 19 ++++++++++ ...AdapterForJavaInterfaceWithNullability.txt | 36 +++++++++++++++++-- ...pterForJavaInterfaceWithNullability_ir.txt | 10 ++++++ .../sam/samWrapperForNullInitialization.kt | 10 ++++++ .../bytecodeText/sam/samWrapperOfLambda.kt | 5 +++ .../codegen/BlackBoxCodegenTestGenerated.java | 6 ++++ .../IrBlackBoxCodegenTestGenerated.java | 6 ++++ .../LightAnalysisModeTestGenerated.java | 5 +++ 9 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 compiler/testData/codegen/box/invokedynamic/sam/covariantOverrideWithPrimitive.kt create mode 100644 compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability_ir.txt 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 09b3be63e37..f8ae7fa6650 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 @@ -19921,6 +19921,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/invokedynamic/sam/constructorReference.kt"); } + @Test + @TestMetadata("covariantOverrideWithPrimitive.kt") + public void testCovariantOverrideWithPrimitive() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/covariantOverrideWithPrimitive.kt"); + } + @Test @TestMetadata("genericFunInterface.kt") public void testGenericFunInterface() throws Exception { diff --git a/compiler/testData/codegen/box/invokedynamic/sam/covariantOverrideWithPrimitive.kt b/compiler/testData/codegen/box/invokedynamic/sam/covariantOverrideWithPrimitive.kt new file mode 100644 index 00000000000..821d7df924f --- /dev/null +++ b/compiler/testData/codegen/box/invokedynamic/sam/covariantOverrideWithPrimitive.kt @@ -0,0 +1,19 @@ +// TARGET_BACKEND: JVM +// JVM_TARGET: 1.8 +// SAM_CONVERSIONS: INDY + +fun interface IFooAny { + fun foo(): Any +} + +fun interface IFooInt : IFooAny { + override fun foo(): Int +} + +fun box(): String { + val test = IFooInt { 42 } + if (test.foo() != 42) + return "Failed" + + return "OK" +} \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability.txt b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability.txt index 6fedbee2322..6e13d1f0c1f 100644 --- a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability.txt +++ b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability.txt @@ -1,10 +1,40 @@ +@kotlin.Metadata +final class SamAdapterForJavaInterfaceWithNullabilityKt$testNoAnnotation$1 { + // source: 'samAdapterForJavaInterfaceWithNullability.kt' + enclosing method SamAdapterForJavaInterfaceWithNullabilityKt.testNoAnnotation(Ljava/lang/String;)LJNoAnnotation; + synthetic final field $s: java.lang.String + inner (anonymous) class SamAdapterForJavaInterfaceWithNullabilityKt$testNoAnnotation$1 + method (p0: java.lang.String): void + public final method getString(): java.lang.String +} + +@kotlin.Metadata +final class SamAdapterForJavaInterfaceWithNullabilityKt$testNotNull$1 { + // source: 'samAdapterForJavaInterfaceWithNullability.kt' + enclosing method SamAdapterForJavaInterfaceWithNullabilityKt.testNotNull(Ljava/lang/String;)LJNotNull; + synthetic final field $s: java.lang.String + inner (anonymous) class SamAdapterForJavaInterfaceWithNullabilityKt$testNotNull$1 + method (p0: java.lang.String): void + public final @org.jetbrains.annotations.NotNull method getNullableString(): java.lang.String +} + +@kotlin.Metadata +final class SamAdapterForJavaInterfaceWithNullabilityKt$testNullable$1 { + // source: 'samAdapterForJavaInterfaceWithNullability.kt' + enclosing method SamAdapterForJavaInterfaceWithNullabilityKt.testNullable(Ljava/lang/String;)LJNullable; + synthetic final field $s: java.lang.String + inner (anonymous) class SamAdapterForJavaInterfaceWithNullabilityKt$testNullable$1 + method (p0: java.lang.String): void + public final @org.jetbrains.annotations.Nullable method getNullableString(): java.lang.String +} + @kotlin.Metadata public final class SamAdapterForJavaInterfaceWithNullabilityKt { // source: 'samAdapterForJavaInterfaceWithNullability.kt' - private final static method testNoAnnotation$lambda-2(p0: java.lang.String): java.lang.String + inner (anonymous) class SamAdapterForJavaInterfaceWithNullabilityKt$testNoAnnotation$1 + inner (anonymous) class SamAdapterForJavaInterfaceWithNullabilityKt$testNotNull$1 + inner (anonymous) class SamAdapterForJavaInterfaceWithNullabilityKt$testNullable$1 public final static @org.jetbrains.annotations.NotNull method testNoAnnotation(@org.jetbrains.annotations.NotNull p0: java.lang.String): JNoAnnotation - private final static method testNotNull$lambda-1(p0: java.lang.String): java.lang.String public final static @org.jetbrains.annotations.NotNull method testNotNull(@org.jetbrains.annotations.NotNull p0: java.lang.String): JNotNull - private final static method testNullable$lambda-0(p0: java.lang.String): java.lang.String public final static @org.jetbrains.annotations.NotNull method testNullable(@org.jetbrains.annotations.NotNull p0: java.lang.String): JNullable } diff --git a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability_ir.txt b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability_ir.txt new file mode 100644 index 00000000000..6fedbee2322 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability_ir.txt @@ -0,0 +1,10 @@ +@kotlin.Metadata +public final class SamAdapterForJavaInterfaceWithNullabilityKt { + // source: 'samAdapterForJavaInterfaceWithNullability.kt' + private final static method testNoAnnotation$lambda-2(p0: java.lang.String): java.lang.String + public final static @org.jetbrains.annotations.NotNull method testNoAnnotation(@org.jetbrains.annotations.NotNull p0: java.lang.String): JNoAnnotation + private final static method testNotNull$lambda-1(p0: java.lang.String): java.lang.String + public final static @org.jetbrains.annotations.NotNull method testNotNull(@org.jetbrains.annotations.NotNull p0: java.lang.String): JNotNull + private final static method testNullable$lambda-0(p0: java.lang.String): java.lang.String + public final static @org.jetbrains.annotations.NotNull method testNullable(@org.jetbrains.annotations.NotNull p0: java.lang.String): JNullable +} diff --git a/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullInitialization.kt b/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullInitialization.kt index ed3a450e24b..e15c32784e8 100644 --- a/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullInitialization.kt +++ b/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullInitialization.kt @@ -15,6 +15,16 @@ fun test() { JFoo.foo2({ i++ }, null) } +// JVM_TEMPLATES: +// @TestKt.class: +// 1 NEW TestKt\$ +// 1 NEW kotlin/jvm/internal/Ref\$IntRef +// 2 NEW +// 0 IFNONNULL +// 0 IFNULL +// 1 ACONST_NULL + +// JVM_IR_TEMPLATES: // @TestKt.class: // 0 NEW TestKt\$ // 1 NEW kotlin/jvm/internal/Ref\$IntRef diff --git a/compiler/testData/codegen/bytecodeText/sam/samWrapperOfLambda.kt b/compiler/testData/codegen/bytecodeText/sam/samWrapperOfLambda.kt index 75e0b5741f7..b82b5f40424 100644 --- a/compiler/testData/codegen/bytecodeText/sam/samWrapperOfLambda.kt +++ b/compiler/testData/codegen/bytecodeText/sam/samWrapperOfLambda.kt @@ -12,5 +12,10 @@ fun test() { } // Lambda inlined into run(), no wrapper class generated: +// JVM_TEMPLATES: +// 1 NEW +// 0 INVOKEINTERFACE + +// JVM_IR_TEMPLATES: // 0 NEW // 0 INVOKEINTERFACE 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 fe03be4e4ec..87ab19a4bd0 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 @@ -19921,6 +19921,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/invokedynamic/sam/constructorReference.kt"); } + @Test + @TestMetadata("covariantOverrideWithPrimitive.kt") + public void testCovariantOverrideWithPrimitive() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/covariantOverrideWithPrimitive.kt"); + } + @Test @TestMetadata("genericFunInterface.kt") public void testGenericFunInterface() throws Exception { 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 dc868d9b42d..621b350cdf9 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 @@ -19921,6 +19921,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/invokedynamic/sam/constructorReference.kt"); } + @Test + @TestMetadata("covariantOverrideWithPrimitive.kt") + public void testCovariantOverrideWithPrimitive() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/covariantOverrideWithPrimitive.kt"); + } + @Test @TestMetadata("genericFunInterface.kt") public void testGenericFunInterface() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index f3e8c2b3486..4e50a92496b 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -16703,6 +16703,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/invokedynamic/sam/constructorReference.kt"); } + @TestMetadata("covariantOverrideWithPrimitive.kt") + public void testCovariantOverrideWithPrimitive() throws Exception { + runTest("compiler/testData/codegen/box/invokedynamic/sam/covariantOverrideWithPrimitive.kt"); + } + @TestMetadata("genericFunInterface.kt") public void testGenericFunInterface() throws Exception { runTest("compiler/testData/codegen/box/invokedynamic/sam/genericFunInterface.kt");