diff --git a/compiler/testData/codegen/boxWithJava/samAdapters/inheritedInKotlin.java b/compiler/testData/codegen/boxWithJava/samAdapters/inheritedInKotlin.java new file mode 100644 index 00000000000..770c145ed5a --- /dev/null +++ b/compiler/testData/codegen/boxWithJava/samAdapters/inheritedInKotlin.java @@ -0,0 +1,5 @@ +class JavaClass { + public void run(Runnable r) { + r.run(); + } +} \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithJava/samAdapters/inheritedInKotlin.kt b/compiler/testData/codegen/boxWithJava/samAdapters/inheritedInKotlin.kt new file mode 100644 index 00000000000..ece8d46c26f --- /dev/null +++ b/compiler/testData/codegen/boxWithJava/samAdapters/inheritedInKotlin.kt @@ -0,0 +1,8 @@ +class KotlinSubclass: JavaClass() { +} + +fun box(): String { + var v = "FAIL" + KotlinSubclass().run { v = "OK" } + return v +} \ No newline at end of file diff --git a/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin.txt b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin.txt new file mode 100644 index 00000000000..37250d7e3fb --- /dev/null +++ b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin.txt @@ -0,0 +1,13 @@ +package test + +public final class Sub : test.Super { + public constructor Sub() + internal open override /*1*/ /*fake_override*/ fun foo(/*0*/ r: (() -> jet.Unit)?): jet.Unit + internal open override /*1*/ /*fake_override*/ fun foo(/*0*/ r: java.lang.Runnable?): jet.Unit +} + +public open class Super : java.lang.Object { + public constructor Super() + public/*package*/ open /*synthesized*/ fun foo(/*0*/ r: (() -> jet.Unit)?): jet.Unit + public/*package*/ open fun foo(/*0*/ r: java.lang.Runnable?): jet.Unit +} diff --git a/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin/Sub.kt b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin/Sub.kt new file mode 100644 index 00000000000..898e3511d8a --- /dev/null +++ b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin/Sub.kt @@ -0,0 +1,4 @@ +package test + +public class Sub: Super() { +} \ No newline at end of file diff --git a/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin/Super.java b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin/Super.java new file mode 100644 index 00000000000..7db309ba2b4 --- /dev/null +++ b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin/Super.java @@ -0,0 +1,5 @@ +package test; + +public class Super { + void foo(Runnable r); +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java index dfcc1d8ba5c..25dfeac895f 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java @@ -150,6 +150,11 @@ public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodege doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/fileFilter.kt"); } + @TestMetadata("inheritedInKotlin.kt") + public void testInheritedInKotlin() throws Exception { + doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/inheritedInKotlin.kt"); + } + @TestMetadata("inheritedOverriddenAdapter.kt") public void testInheritedOverriddenAdapter() throws Exception { doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapter.kt"); diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java index 4dbceb0877e..ed136f84c5f 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java @@ -1409,12 +1409,31 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { } @TestMetadata("compiler/testData/loadJava/javaAgainstKotlin") - @InnerTestClasses({JavaAgainstKotlin.SignaturePropagation.class, JavaAgainstKotlin.Visibility.class}) + @InnerTestClasses({JavaAgainstKotlin.SamAdapters.class, JavaAgainstKotlin.SignaturePropagation.class, JavaAgainstKotlin.Visibility.class}) public static class JavaAgainstKotlin extends AbstractLoadJavaTest { public void testAllFilesPresentInJavaAgainstKotlin() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/loadJava/javaAgainstKotlin"), Pattern.compile("^(.+)\\.txt$"), true); } + @TestMetadata("compiler/testData/loadJava/javaAgainstKotlin/samAdapters") + @InnerTestClasses({}) + public static class SamAdapters extends AbstractLoadJavaTest { + public void testAllFilesPresentInSamAdapters() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/loadJava/javaAgainstKotlin/samAdapters"), Pattern.compile("^(.+)\\.txt$"), true); + } + + @TestMetadata("InheritSamAdapterInKotlin.txt") + public void testInheritSamAdapterInKotlin() throws Exception { + doTestJavaAgainstKotlin("compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin.txt"); + } + + public static Test innerSuite() { + TestSuite suite = new TestSuite("SamAdapters"); + suite.addTestSuite(SamAdapters.class); + return suite; + } + } + @TestMetadata("compiler/testData/loadJava/javaAgainstKotlin/signaturePropagation") @InnerTestClasses({}) public static class SignaturePropagation extends AbstractLoadJavaTest { @@ -1481,6 +1500,7 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { public static Test innerSuite() { TestSuite suite = new TestSuite("JavaAgainstKotlin"); suite.addTestSuite(JavaAgainstKotlin.class); + suite.addTest(SamAdapters.innerSuite()); suite.addTest(SignaturePropagation.innerSuite()); suite.addTest(Visibility.innerSuite()); return suite;