Parcelize: Support @IgnoreOnParcel primary constructor parameters...
...with default values. See https://issuetracker.google.com/177850560
This commit is contained in:
committed by
Alexander Udalov
parent
00289d3514
commit
58c687e42d
@@ -0,0 +1,51 @@
|
||||
// WITH_STDLIB
|
||||
// IGNORE_BACKEND: JVM
|
||||
|
||||
@file:JvmName("TestKt")
|
||||
package test
|
||||
|
||||
import kotlinx.parcelize.*
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
|
||||
class T(val value: Int)
|
||||
|
||||
@Parcelize
|
||||
class A(
|
||||
val x: String,
|
||||
@IgnoredOnParcel
|
||||
val i1: String = "default",
|
||||
@IgnoredOnParcel
|
||||
val i2: T = T(10),
|
||||
val d: String = "default",
|
||||
) : Parcelable {
|
||||
@IgnoredOnParcel
|
||||
val a: String = x
|
||||
}
|
||||
|
||||
@Parcelize
|
||||
object B : Parcelable {
|
||||
@IgnoredOnParcel
|
||||
val x: T = T(2)
|
||||
}
|
||||
|
||||
fun box() = parcelTest { parcel ->
|
||||
val a1 = A("X", "i1", T(0), "d")
|
||||
|
||||
a1.writeToParcel(parcel, 0)
|
||||
B.writeToParcel(parcel, 0)
|
||||
|
||||
val bytes = parcel.marshall()
|
||||
parcel.unmarshall(bytes, 0, bytes.size)
|
||||
parcel.setDataPosition(0)
|
||||
|
||||
val a2 = parcelableCreator<A>().createFromParcel(parcel)
|
||||
val b = parcelableCreator<B>().createFromParcel(parcel)
|
||||
|
||||
assert(a1.x == a2.x)
|
||||
assert(a2.i1 == "default")
|
||||
assert(a2.i2.value == 10)
|
||||
assert(a1.d == a2.d)
|
||||
assert(a1.a == a2.a)
|
||||
assert(b == B)
|
||||
}
|
||||
Reference in New Issue
Block a user