Parcelable: Correctly handle writeToParcel() overriding, report errors on custom writeToParcel() and CREATOR

This commit is contained in:
Yan Zhulanow
2017-06-29 21:00:05 +03:00
parent 96c9bcd820
commit aa5f9ee3ec
7 changed files with 109 additions and 11 deletions
@@ -0,0 +1,16 @@
package test
import kotlinx.android.parcel.MagicParcel
import android.os.Parcelable
import android.os.Parcel
@MagicParcel
class A(val a: String) : Parcelable {
companion object {
@JvmField
val <error descr="[CREATOR_DEFINITION_IS_FORBIDDEN] 'CREATOR' definition is forbidden. Use 'Parceler' nested object instead.">CREATOR</error> = object : Parcelable.Creator<A> {
override fun createFromParcel(source: Parcel): A = A("")
override fun newArray(size: Int) = arrayOfNulls<A>(size)
}
}
}
@@ -0,0 +1,21 @@
package test
import kotlinx.android.parcel.MagicParcel
import android.os.Parcelable
import android.os.Parcel
@MagicParcel
class A(val a: String) : Parcelable {
<error descr="[OVERRIDING_WRITE_TO_PARCEL_IS_FORBIDDEN] Overriding 'writeToParcel' is forbidden. Use 'Parceler' nested object instead.">override</error> fun writeToParcel(p: Parcel?, flags: Int) {}
override fun describeContents() = 0
}
@MagicParcel
class B(val a: String) : Parcelable {
<error descr="[OVERRIDING_WRITE_TO_PARCEL_IS_FORBIDDEN] Overriding 'writeToParcel' is forbidden. Use 'Parceler' nested object instead.">override</error> fun writeToParcel(p: Parcel?, flags: Int) {}
}
@MagicParcel
class C(val a: String) : Parcelable {
<error descr="[OVERRIDING_WRITE_TO_PARCEL_IS_FORBIDDEN] Overriding 'writeToParcel' is forbidden. Use 'Parceler' nested object instead.">override</error> fun writeToParcel(p: Parcel, flags: Int) {}
}