diff --git a/compiler/testData/codegen/boxWithJava/samAdapters/typeParameterOfOuterClass.java b/compiler/testData/codegen/boxWithJava/samAdapters/typeParameterOfOuterClass.java new file mode 100644 index 00000000000..6d7f36ca017 --- /dev/null +++ b/compiler/testData/codegen/boxWithJava/samAdapters/typeParameterOfOuterClass.java @@ -0,0 +1,13 @@ +import java.util.*; + +class WeirdComparator { + public Inner createInner() { + return new Inner(); + } + + public class Inner { + public T max(Comparator comparator, T value1, T value2) { + return comparator.compare(value1, value2) > 0 ? value1 : value2; + } + } +} diff --git a/compiler/testData/codegen/boxWithJava/samAdapters/typeParameterOfOuterClass.kt b/compiler/testData/codegen/boxWithJava/samAdapters/typeParameterOfOuterClass.kt new file mode 100644 index 00000000000..4788b8b669a --- /dev/null +++ b/compiler/testData/codegen/boxWithJava/samAdapters/typeParameterOfOuterClass.kt @@ -0,0 +1,6 @@ +fun box(): String { + val wc = WeirdComparator().createInner()!! + val result = wc.max({ a, b -> a.length - b.length }, "java", "kotlin") + if (result != "kotlin") return "Wrong: $result" + return "OK" +} diff --git a/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/TypeParameterOfOuterClass.java b/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/TypeParameterOfOuterClass.java new file mode 100644 index 00000000000..ebf225404f0 --- /dev/null +++ b/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/TypeParameterOfOuterClass.java @@ -0,0 +1,10 @@ +package test; + +import java.util.*; + +public class TypeParameterOfOuterClass { + public class Inner { + public void foo(Comparator comparator) { + } + } +} diff --git a/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/TypeParameterOfOuterClass.txt b/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/TypeParameterOfOuterClass.txt new file mode 100644 index 00000000000..7db0f2abf5c --- /dev/null +++ b/compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/TypeParameterOfOuterClass.txt @@ -0,0 +1,11 @@ +package test + +public open class TypeParameterOfOuterClass : java.lang.Object { + public constructor TypeParameterOfOuterClass() + + public open inner class Inner : java.lang.Object { + public constructor Inner() + public open /*synthesized*/ fun foo(/*0*/ p0 : ((T?, T?) -> jet.Int)?) : jet.Unit + public open fun foo(/*0*/ p0 : java.util.Comparator?) : jet.Unit + } +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java index 9775f9207b3..45faca6cf12 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java @@ -147,6 +147,11 @@ public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodege doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/typeParameterOfMethod.kt"); } + @TestMetadata("typeParameterOfOuterClass.kt") + public void testTypeParameterOfOuterClass() throws Exception { + doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/typeParameterOfOuterClass.kt"); + } + } @TestMetadata("compiler/testData/codegen/boxWithJava/staticFun") diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java index f43aa0dcf33..09853f91ad9 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java @@ -1249,6 +1249,11 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { doTestCompiledJava("compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/TypeParameterOfMethod.java"); } + @TestMetadata("TypeParameterOfOuterClass.java") + public void testTypeParameterOfOuterClass() throws Exception { + doTestCompiledJava("compiler/testData/loadJava/compiledJava/singleAbstractMethod/adapter/TypeParameterOfOuterClass.java"); + } + } public static Test innerSuite() {