From be3273a9335fa5591dc5c4562959f73f6d2c2974 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Fri, 1 Sep 2017 22:32:57 +0300 Subject: [PATCH] Parcelable: Flags argument should be propagated to the nested Parcelable's writeToParcel() (KT-20019) --- .../kotlin/android/parcel/serializers/ParcelSerializers.kt | 2 +- .../testData/parcel/codegen/parcelable.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/serializers/ParcelSerializers.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/serializers/ParcelSerializers.kt index 92d2f698a45..1d14052f46b 100644 --- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/serializers/ParcelSerializers.kt +++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/serializers/ParcelSerializers.kt @@ -465,7 +465,7 @@ internal class EfficientParcelableParcelSerializer(override val asmType: Type, p internal class GenericParcelableParcelSerializer(override val asmType: Type, val containerClassType: Type) : ParcelSerializer { override fun writeValue(v: InstructionAdapter) { // -> parcel, parcelable - v.aconst(0) // -> parcel, parcelable, flags + v.load(2, Type.INT_TYPE) // -> parcel, parcelable, flags v.invokevirtual(PARCEL_TYPE.internalName, "writeParcelable", "(Landroid/os/Parcelable;I)V", false) } diff --git a/plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/parcelable.txt b/plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/parcelable.txt index faf1764e22f..2d528fac15f 100644 --- a/plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/parcelable.txt +++ b/plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/parcelable.txt @@ -60,7 +60,7 @@ public final class test/Foo : java/lang/Object, android/os/Parcelable { ALOAD (1) ALOAD (0) GETFIELD (parcelable, Landroid/os/Parcelable;) - LDC (0) + ILOAD (2) INVOKEVIRTUAL (android/os/Parcel, writeParcelable, (Landroid/os/Parcelable;I)V) RETURN LABEL (L1)