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 b0999d32106..1f9521ebe11 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 @@ -129,6 +129,11 @@ public class ParcelBoxTestGenerated extends AbstractParcelBoxTest { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt25839.kt"); } + @TestMetadata("kt26221.kt") + public void testKt26221() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt26221.kt"); + } + @TestMetadata("listKinds.kt") public void testListKinds() throws Exception { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/listKinds.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 64a6aad0a2c..5453b44d745 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 @@ -129,6 +129,11 @@ public class ParcelIrBoxTestGenerated extends AbstractParcelIrBoxTest { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt25839.kt"); } + @TestMetadata("kt26221.kt") + public void testKt26221() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt26221.kt"); + } + @TestMetadata("listKinds.kt") public void testListKinds() throws Exception { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/listKinds.kt"); diff --git a/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt26221.kt b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt26221.kt new file mode 100644 index 00000000000..97d7d244f8f --- /dev/null +++ b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt26221.kt @@ -0,0 +1,38 @@ +// IGNORE_BACKEND: JVM +// Fails with a VerifyError in Foo.writeToParcel +// WITH_RUNTIME + +@file:JvmName("TestKt") +package test + +import kotlinx.android.parcel.* +import android.os.Parcel +import android.os.Parcelable +import android.util.SparseArray + +@Parcelize +data class PInt(val x: Int) : Parcelable + +@Parcelize +data class Foo(val values: SparseArray>) : Parcelable + +fun box() = parcelTest { parcel -> + val pint = PInt(0) + val sarray = SparseArray() + sarray.put(0, pint) + val sarray2 = SparseArray>() + sarray2.put(1, sarray) + val foo = Foo(sarray2) + + foo.writeToParcel(parcel, 0) + + val bytes = parcel.marshall() + parcel.unmarshall(bytes, 0, bytes.size) + + val foo2 = readFromParcel(parcel) + assert(foo2.values.size() == 1) + assert(foo2.values.get(1) != null) // SparseArray.contains was only added in Android R + assert(foo2.values.get(1).size() == 1) + assert(foo2.values.get(1).get(0) != null) + assert(foo2.values.get(1).get(0) == pint) +}