From fd7b29ad488caa152ef15cc34401a9ab8a53b359 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Thu, 20 Jun 2013 20:59:40 +0400 Subject: [PATCH] Added tests with SAM adapter overridden in Kotlin class. --- .../inheritedOverriddenAdapterInKotlin.java | 7 +++++++ .../inheritedOverriddenAdapterInKotlin.kt | 21 +++++++++++++++++++ .../OverrideSamAdapterInKotlin.txt | 13 ++++++++++++ .../OverrideSamAdapterInKotlin/Sub.kt | 6 ++++++ .../OverrideSamAdapterInKotlin/Super.java | 5 +++++ .../BlackBoxWithJavaCodegenTestGenerated.java | 5 +++++ .../jvm/compiler/LoadJavaTestGenerated.java | 5 +++++ 7 files changed, 62 insertions(+) create mode 100644 compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapterInKotlin.java create mode 100644 compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapterInKotlin.kt create mode 100644 compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin.txt create mode 100644 compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin/Sub.kt create mode 100644 compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin/Super.java diff --git a/compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapterInKotlin.java b/compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapterInKotlin.java new file mode 100644 index 00000000000..60f0119ff89 --- /dev/null +++ b/compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapterInKotlin.java @@ -0,0 +1,7 @@ +class Super { + public String lastCalled = null; + + void foo(Runnable r) { + lastCalled = "super"; + } +} diff --git a/compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapterInKotlin.kt b/compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapterInKotlin.kt new file mode 100644 index 00000000000..684e527cf72 --- /dev/null +++ b/compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapterInKotlin.kt @@ -0,0 +1,21 @@ +class Sub() : Super() { + override fun foo(r : (() -> Unit)?) { + lastCalled = "sub" + } +} + +fun box(): String { + val sub = Sub() + + (sub : Super).foo{ } + if (sub.lastCalled != "super") { + return "FAIL: ${sub.lastCalled} instead of super" + } + + sub.foo{ } + if (sub.lastCalled != "sub") { + return "FAIL: ${sub.lastCalled} instead of sub" + } + + return "OK" +} diff --git a/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin.txt b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin.txt new file mode 100644 index 00000000000..cf8b53614d4 --- /dev/null +++ b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin.txt @@ -0,0 +1,13 @@ +package test + +public final class Sub : test.Super { + public constructor Sub() + internal open override /*1*/ 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/OverrideSamAdapterInKotlin/Sub.kt b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin/Sub.kt new file mode 100644 index 00000000000..40436f98106 --- /dev/null +++ b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin/Sub.kt @@ -0,0 +1,6 @@ +package test + +public class Sub: Super() { + override fun foo(r: (() -> Unit)?) { + } +} \ No newline at end of file diff --git a/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin/Super.java b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin/Super.java new file mode 100644 index 00000000000..7db309ba2b4 --- /dev/null +++ b/compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin/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 25dfeac895f..95fb3ff4806 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java @@ -160,6 +160,11 @@ public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodege doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapter.kt"); } + @TestMetadata("inheritedOverriddenAdapterInKotlin.kt") + public void testInheritedOverriddenAdapterInKotlin() throws Exception { + doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/inheritedOverriddenAdapterInKotlin.kt"); + } + @TestMetadata("inheritedSimple.kt") public void testInheritedSimple() throws Exception { doTestWithJava("compiler/testData/codegen/boxWithJava/samAdapters/inheritedSimple.kt"); diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java index ed136f84c5f..cee4e3bda85 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java @@ -1427,6 +1427,11 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { doTestJavaAgainstKotlin("compiler/testData/loadJava/javaAgainstKotlin/samAdapters/InheritSamAdapterInKotlin.txt"); } + @TestMetadata("OverrideSamAdapterInKotlin.txt") + public void testOverrideSamAdapterInKotlin() throws Exception { + doTestJavaAgainstKotlin("compiler/testData/loadJava/javaAgainstKotlin/samAdapters/OverrideSamAdapterInKotlin.txt"); + } + public static Test innerSuite() { TestSuite suite = new TestSuite("SamAdapters"); suite.addTestSuite(SamAdapters.class);