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 b83f9686766..f5d9570b48f 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 @@ -89,6 +89,11 @@ public class ParcelBoxTestGenerated extends AbstractParcelBoxTest { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/enums.kt"); } + @TestMetadata("exceptions.kt") + public void testExceptions() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt"); + } + @TestMetadata("intArray.kt") public void testIntArray() throws Exception { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/intArray.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 5673124dd47..dba31286869 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 @@ -89,6 +89,11 @@ public class ParcelIrBoxTestGenerated extends AbstractParcelIrBoxTest { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/enums.kt"); } + @TestMetadata("exceptions.kt") + public void testExceptions() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt"); + } + @TestMetadata("intArray.kt") public void testIntArray() throws Exception { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/intArray.kt"); diff --git a/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt new file mode 100644 index 00000000000..2f68e5aac0f --- /dev/null +++ b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt @@ -0,0 +1,24 @@ +// IGNORE_BACKEND: JVM +// Parcel.readException throws the exception it reads and only supports a small number of exception types. +// If we have to parcel an exception we should instead use read/writeSerializable (compare KT-31830) +// WITH_RUNTIME + +@file:JvmName("TestKt") +package test + +import kotlinx.android.parcel.* +import android.os.Parcel +import android.os.Parcelable + +@Parcelize +class ExceptionContainer(val exn: Exception) : Parcelable + +fun box() = parcelTest { parcel -> + val test = ExceptionContainer(java.lang.RuntimeException("Don't throw me.")) + test.writeToParcel(parcel, 0) + + val bytes = parcel.marshall() + parcel.unmarshall(bytes, 0, bytes.size) + + val test2 = readFromParcel(parcel) +}