Parcelize: Add an intrinsic to access Parcelable CREATOR fields
Fixes KT-19853. The CREATOR field is a static field on a Parcelable class which is not visible from Kotlin since the necessary metadata would have to be in a Companion object which may not exist. This commit adds a [parcelableCreator] function to kotlinx.parcelize, which is optimized to a direct field access whenever possible.
This commit is contained in:
committed by
Alexander Udalov
parent
897c09bf8d
commit
fc013c6b9f
@@ -0,0 +1,28 @@
|
||||
// CURIOUS_ABOUT test1, test2, test3
|
||||
// WITH_RUNTIME
|
||||
|
||||
import kotlinx.parcelize.*
|
||||
import android.os.Parcelable
|
||||
|
||||
@Parcelize
|
||||
class A(val value: Int) : Parcelable
|
||||
|
||||
@Parcelize
|
||||
class B : Parcelable
|
||||
|
||||
@Parcelize
|
||||
object C : Parcelable
|
||||
|
||||
fun test1() {
|
||||
parcelableCreator<A>()
|
||||
parcelableCreator<B>()
|
||||
parcelableCreator<C>()
|
||||
}
|
||||
|
||||
inline fun <reified T : Parcelable> test2() {
|
||||
parcelableCreator<T>()
|
||||
}
|
||||
|
||||
fun test3() {
|
||||
test2<A>()
|
||||
}
|
||||
Reference in New Issue
Block a user