From a03c03c4273f6fe6575b6b590d7454e179b44335 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Fri, 1 Sep 2017 23:22:30 +0300 Subject: [PATCH] Parcelable: Handle nullability in Parcelize Parcelable serializer (KT-20032) --- .../android/parcel/serializers/ParcelSerializer.kt | 2 +- .../testData/parcel/box/nullableTypes.kt | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) 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 90e1820cfed..b833af257d1 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 @@ -183,7 +183,7 @@ interface ParcelSerializer { else -> null } - creatorAsmType?.let { EfficientParcelableParcelSerializer(asmType, creatorAsmType) } + creatorAsmType?.let { wrapToNullAwareIfNeeded(type, EfficientParcelableParcelSerializer(asmType, creatorAsmType)) } ?: GenericParcelableParcelSerializer(asmType, context.containerClassType) } else { diff --git a/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/nullableTypes.kt b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/nullableTypes.kt index dbacafbf139..d7cfdfcf4bd 100644 --- a/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/nullableTypes.kt +++ b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/nullableTypes.kt @@ -7,17 +7,21 @@ import kotlinx.android.parcel.* import android.os.Parcel import android.os.Parcelable +@Parcelize +data class Foo(val a: String) : Parcelable + @Parcelize data class Test( val str1: String, val str2: String?, val int1: Int, - val int2: Int? + val int2: Int?, + val foo: Foo? ) : Parcelable fun box() = parcelTest { parcel -> - val first = Test("John", "Smith", 20, 30) - val second = Test("A", null, 20, null) + val first = Test("John", "Smith", 20, 30, Foo("a")) + val second = Test("A", null, 20, null, null) first.writeToParcel(parcel, 0) second.writeToParcel(parcel, 0)