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)