diff --git a/compiler/testData/codegen/boxWithJava/samAdapters/severalSamParameters.java b/compiler/testData/codegen/boxWithJava/samAdapters/severalSamParameters.java new file mode 100644 index 00000000000..34d70ac06bf --- /dev/null +++ b/compiler/testData/codegen/boxWithJava/samAdapters/severalSamParameters.java @@ -0,0 +1,9 @@ +import java.util.*; + +class JavaClass { + public static String findMaxAndInvokeCallback(Comparator comparator, String a, String b, Runnable afterRunnable) { + int compare = comparator.compare(a, b); + afterRunnable.run(); + return compare > 0 ? a : b; + } +} diff --git a/compiler/testData/codegen/boxWithJava/samAdapters/severalSamParameters.kt b/compiler/testData/codegen/boxWithJava/samAdapters/severalSamParameters.kt new file mode 100644 index 00000000000..cf8de53fd7f --- /dev/null +++ b/compiler/testData/codegen/boxWithJava/samAdapters/severalSamParameters.kt @@ -0,0 +1,6 @@ +fun box(): String { + var v = "FAIL" + val max = JavaClass.findMaxAndInvokeCallback({ a, b -> a.length - b.length }, "foo", "kotlin", { v = "OK" }) + if (max != "kotlin") return "Wrong max: $max" + return v +} \ No newline at end of file diff --git a/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/SeveralSamParameters.java b/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/SeveralSamParameters.java new file mode 100644 index 00000000000..2087cfb6beb --- /dev/null +++ b/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/SeveralSamParameters.java @@ -0,0 +1,9 @@ +package test; + +import java.util.*; + +public class SeveralSamParameters { + public static String findMaxAndInvokeCallback(Comparator comparator, String a, String b, Runnable afterRunnable) { + throw new UnsupportedOperationException(); + } +} diff --git a/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/SeveralSamParameters.txt b/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/SeveralSamParameters.txt new file mode 100644 index 00000000000..e822f4d6b55 --- /dev/null +++ b/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/SeveralSamParameters.txt @@ -0,0 +1,10 @@ +package test + +public open class SeveralSamParameters : java.lang.Object { + public constructor SeveralSamParameters() +} + +package SeveralSamParameters { + public open /*synthesized*/ fun findMaxAndInvokeCallback(/*0*/ p0 : ((jet.String?, jet.String?) -> jet.Int)?, /*1*/ p1 : jet.String?, /*2*/ p2 : jet.String?, /*3*/ p3 : (() -> jet.Unit)?) : jet.String? + public open fun findMaxAndInvokeCallback(/*0*/ p0 : java.util.Comparator?, /*1*/ p1 : jet.String?, /*2*/ p2 : jet.String?, /*3*/ p3 : java.lang.Runnable?) : jet.String? +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java index cd20a9b84d8..72597a9bc65 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java @@ -127,6 +127,11 @@ public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodege doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/fileFilter.kt"); } + @TestMetadata("severalSamParameters.kt") + public void testSeveralSamParameters() throws Exception { + doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/severalSamParameters.kt"); + } + @TestMetadata("simplest.kt") public void testSimplest() throws Exception { doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/simplest.kt"); diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java index 7f638b18621..4760815c251 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java @@ -1234,6 +1234,11 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { doTestCompiledJava("compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/NonTrivialFunctionType.java"); } + @TestMetadata("SeveralSamParameters.java") + public void testSeveralSamParameters() throws Exception { + doTestCompiledJava("compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/SeveralSamParameters.java"); + } + } public static Test innerSuite() {