From a861e5bc5e2272dbcd332abcaf8fb98e57c1886f Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 14 May 2014 17:50:10 +0400 Subject: [PATCH] A test for the case fixed in 291741754b3dcb98352968f94589ed5d51a85f6e When Java binaries refer to Kotlin binaries, and then some Kotlin source refers to the same Kotlin binary class, we should load this class consistently --- .../javaRefersToKotlin.kt | 5 +++++ .../javaRefersToKotlin.txt | 14 ++++++++++++++ .../javaRefersToKotlin/J.java | 5 +++++ .../javaRefersToKotlin/K.kt | 3 +++ .../jet/jvm/compiler/LoadJavaTestGenerated.java | 5 +++++ 5 files changed, 32 insertions(+) create mode 100644 compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin.kt create mode 100644 compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin.txt create mode 100644 compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin/J.java create mode 100644 compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin/K.kt diff --git a/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin.kt b/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin.kt new file mode 100644 index 00000000000..b8ebf98b8fc --- /dev/null +++ b/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin.kt @@ -0,0 +1,5 @@ +package test + +trait K1 : J { + override fun foo(k: K?) +} \ No newline at end of file diff --git a/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin.txt b/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin.txt new file mode 100644 index 00000000000..499f00e726c --- /dev/null +++ b/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin.txt @@ -0,0 +1,14 @@ +package test + +public /*synthesized*/ fun J(/*0*/ function: (test.K?) -> kotlin.Unit): test.J + +public trait J : java.lang.Object { + public abstract fun foo(/*0*/ p0: test.K?): kotlin.Unit +} + +internal trait K { +} + +internal trait K1 : test.J { + public abstract override /*1*/ fun foo(/*0*/ k: test.K?): kotlin.Unit +} diff --git a/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin/J.java b/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin/J.java new file mode 100644 index 00000000000..39e5f4b11b9 --- /dev/null +++ b/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin/J.java @@ -0,0 +1,5 @@ +package test; + +public interface J { + void foo(K k); +} \ No newline at end of file diff --git a/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin/K.kt b/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin/K.kt new file mode 100644 index 00000000000..38a3d12f5fa --- /dev/null +++ b/compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin/K.kt @@ -0,0 +1,3 @@ +package test + +trait K \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java index 8398fbe8eb4..c0d20b9c4d7 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java @@ -3144,6 +3144,11 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { doTestKotlinAgainstCompiledJavaWithKotlin("compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/InheritParameterName.kt"); } + @TestMetadata("javaRefersToKotlin.kt") + public void testJavaRefersToKotlin() throws Exception { + doTestKotlinAgainstCompiledJavaWithKotlin("compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/javaRefersToKotlin.kt"); + } + } @TestMetadata("compiler/testData/loadJava/sourceJava")