diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java index f5d9570b48f..259df8d59da 100644 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java @@ -44,6 +44,11 @@ public class ParcelBoxTestGenerated extends AbstractParcelBoxTest { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/arrays.kt"); } + @TestMetadata("binder.kt") + public void testBinder() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/binder.kt"); + } + @TestMetadata("boxedTypes.kt") public void testBoxedTypes() throws Exception { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/boxedTypes.kt"); diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java index dba31286869..eaa8a30d7b9 100644 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java @@ -44,6 +44,11 @@ public class ParcelIrBoxTestGenerated extends AbstractParcelIrBoxTest { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/arrays.kt"); } + @TestMetadata("binder.kt") + public void testBinder() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/binder.kt"); + } + @TestMetadata("boxedTypes.kt") public void testBoxedTypes() throws Exception { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/boxedTypes.kt"); diff --git a/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/binder.kt b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/binder.kt new file mode 100644 index 00000000000..2c9020bca5e --- /dev/null +++ b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/binder.kt @@ -0,0 +1,40 @@ +// IGNORE_BACKEND: JVM +// See KT-38103 +// There is no such thing as a readStrongInterface method to deserialize arbitrary IIinterface implementations +// WITH_RUNTIME + +@file:JvmName("TestKt") +package test + +import kotlinx.android.parcel.* +import android.os.Binder +import android.os.IBinder +import android.os.IInterface +import android.os.Parcel +import android.os.Parcelable +import java.io.Serializable + +class MockBinder : Binder(), Serializable + +@Parcelize +class MockIInterface : IInterface, Parcelable { + override fun asBinder(): IBinder = MockBinder() +} + +@Parcelize +class ServiceContainer( + val binder: MockBinder, + val iinterface: MockIInterface, + val binderArray: Array, + val binderList: List +) : Parcelable + +fun box() = parcelTest { parcel -> + val test = ServiceContainer(MockBinder(), MockIInterface(), arrayOf(MockBinder()), listOf(MockBinder())) + test.writeToParcel(parcel, 0) + + val bytes = parcel.marshall() + parcel.unmarshall(bytes, 0, bytes.size) + + val test2 = readFromParcel(parcel) +}