diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/serializers/ParcelSerializer.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/serializers/ParcelSerializer.kt index 15311701fec..b49758454f4 100644 --- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/serializers/ParcelSerializer.kt +++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/serializers/ParcelSerializer.kt @@ -113,7 +113,7 @@ interface ParcelSerializer { asmType.sort == Type.ARRAY -> { val elementType = type.builtIns.getArrayElementType(type) - val elementSerializer = get(elementType, typeMapper.mapTypeSafe(elementType, forceBoxed = false), context, strict = strict()) + val elementSerializer = get(elementType, typeMapper.mapTypeSafe(elementType, forceBoxed = true), context, strict = strict()) wrapToNullAwareIfNeeded(type, ArrayParcelSerializer(asmType, elementSerializer)) } diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/ParcelBoxTest.kt b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/ParcelBoxTest.kt index bbd38765b62..985921e99e1 100644 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/ParcelBoxTest.kt +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/android/parcel/ParcelBoxTest.kt @@ -55,6 +55,7 @@ class ParcelBoxTest : AbstractParcelBoxTest() { fun testCustomSerializerBoxing() = doTest("customSerializerBoxing") fun testKt20717() = doTest("kt20717") fun testEnumObject() = doTest("enumObject") + fun testIntArray() = doTest("intArray") } class ParcelBoxTestWithSerializableLikeExtension : AbstractParcelBoxTest() { diff --git a/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/intArray.kt b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/intArray.kt new file mode 100644 index 00000000000..a1214e72ad3 --- /dev/null +++ b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/intArray.kt @@ -0,0 +1,38 @@ +// WITH_RUNTIME + +@file:JvmName("TestKt") +package test + +import kotlinx.android.parcel.* +import android.os.Parcel +import android.os.Parcelable +import java.util.Arrays + +@Parcelize +data class Film(val genres: Array) : Parcelable { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as Film + + if (!Arrays.equals(genres, other.genres)) return false + + return true + } + + override fun hashCode(): Int { + return Arrays.hashCode(genres) + } +} + +fun box() = parcelTest { parcel -> + val film = Film(arrayOf(3, 5, 7)) + film.writeToParcel(parcel, 0) + + val bytes = parcel.marshall() + parcel.unmarshall(bytes, 0, bytes.size) + + val film2 = readFromParcel(parcel) + assert(film == film2) +} \ No newline at end of file