Parcelize: Add the Parcelize compiler plugin with sources extracted from Android Extensions plugin (KT-40030)

This commit is contained in:
Yan Zhulanow
2020-07-07 19:30:23 +09:00
parent c9bca165bc
commit b7796d63d8
152 changed files with 11872 additions and 0 deletions
@@ -0,0 +1,89 @@
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readStrongBinder, ()Landroid/os/IBinder;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, createBinderArray, ()[Landroid/os/IBinder;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, createBinderArrayList, ()Ljava/util/ArrayList;)
CHECKCAST
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, createBinderArrayList, ()Ljava/util/ArrayList;)
INVOKESPECIAL (User, <init>, (Landroid/os/IBinder;[Landroid/os/IBinder;Ljava/util/List;Ljava/util/ArrayList;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
LABEL (L1)
}
public final User[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.os.IBinder binder
private final android.os.IBinder[] binderArray
private final java.util.ArrayList binderArrayList
private final java.util.List binderList
static void <clinit>()
public void <init>(android.os.IBinder binder, android.os.IBinder[] binderArray, java.util.List binderList, java.util.ArrayList binderArrayList)
public int describeContents()
public final android.os.IBinder getBinder()
public final android.os.IBinder[] getBinderArray()
public final java.util.ArrayList getBinderArrayList()
public final java.util.List getBinderList()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (binder, Landroid/os/IBinder;)
INVOKEVIRTUAL (android/os/Parcel, writeStrongBinder, (Landroid/os/IBinder;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (binderArray, [Landroid/os/IBinder;)
INVOKEVIRTUAL (android/os/Parcel, writeBinderArray, ([Landroid/os/IBinder;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (binderList, Ljava/util/List;)
INVOKEVIRTUAL (android/os/Parcel, writeBinderList, (Ljava/util/List;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (binderArrayList, Ljava/util/ArrayList;)
CHECKCAST
INVOKEVIRTUAL (android/os/Parcel, writeBinderList, (Ljava/util/List;)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,17 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcelable
import android.os.IBinder
import android.os.IInterface
@Parcelize
class User(
val binder: IBinder,
val binderArray: Array<IBinder>,
val binderList: List<IBinder>,
val binderArrayList: ArrayList<IBinder> // should be serialized using our strategy, not using Parcel.writeBinderList()
// There is no readStrongInterface method in Parcel.
// val intf: IInterface?
) : Parcelable
@@ -0,0 +1,126 @@
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readStrongBinder, ()Landroid/os/IBinder;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, createBinderArray, ()[Landroid/os/IBinder;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, createBinderArrayList, ()Ljava/util/ArrayList;)
CHECKCAST
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
ISTORE (2)
NEW
DUP
ILOAD (2)
INVOKESPECIAL (java/util/ArrayList, <init>, (I)V)
ILOAD (2)
LABEL (L2)
DUP_X1
IFEQ (L3)
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readStrongBinder, ()Landroid/os/IBinder;)
INVOKEVIRTUAL (java/util/ArrayList, add, (Ljava/lang/Object;)Z)
POP
SWAP
LDC (-1)
IADD
GOTO (L2)
LABEL (L3)
SWAP
POP
INVOKESPECIAL (User, <init>, (Landroid/os/IBinder;[Landroid/os/IBinder;Ljava/util/List;Ljava/util/ArrayList;)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (10)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
}
public final User[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.os.IBinder binder
private final android.os.IBinder[] binderArray
private final java.util.ArrayList binderArrayList
private final java.util.List binderList
static void <clinit>()
public void <init>(android.os.IBinder binder, android.os.IBinder[] binderArray, java.util.List binderList, java.util.ArrayList binderArrayList)
public int describeContents()
public final android.os.IBinder getBinder()
public final android.os.IBinder[] getBinderArray()
public final java.util.ArrayList getBinderArrayList()
public final java.util.List getBinderList()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (binder, Landroid/os/IBinder;)
INVOKEVIRTUAL (android/os/Parcel, writeStrongBinder, (Landroid/os/IBinder;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (binderArray, [Landroid/os/IBinder;)
INVOKEVIRTUAL (android/os/Parcel, writeBinderArray, ([Landroid/os/IBinder;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (binderList, Ljava/util/List;)
INVOKEVIRTUAL (android/os/Parcel, writeBinderList, (Ljava/util/List;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (binderArrayList, Ljava/util/ArrayList;)
DUP_X1
INVOKEINTERFACE (java/util/Collection, size, ()I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
INVOKEINTERFACE (java/util/Collection, iterator, ()Ljava/util/Iterator;)
LABEL (L1)
DUP
INVOKEINTERFACE (java/util/Iterator, hasNext, ()Z)
IFEQ (L2)
DUP
ALOAD (1)
SWAP
INVOKEINTERFACE (java/util/Iterator, next, ()Ljava/lang/Object;)
CHECKCAST
INVOKEVIRTUAL (android/os/Parcel, writeStrongBinder, (Landroid/os/IBinder;)V)
GOTO (L1)
LABEL (L2)
POP
RETURN
LABEL (L3)
}
}
@@ -0,0 +1,45 @@
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final User[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final int age
private final java.lang.String firstName
private final boolean isProUser
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser)
public int describeContents() {
LABEL (L0)
LINENUMBER (9)
BIPUSH (100)
IRETURN
LABEL (L1)
}
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public final boolean isProUser()
public void writeToParcel(android.os.Parcel out, int flags)
}
@@ -0,0 +1,10 @@
// CURIOUS_ABOUT describeContents
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcelable
@Parcelize
class User(val firstName: String, val lastName: String, val age: Int, val isProUser: Boolean) : Parcelable {
override fun describeContents() = 100
}
@@ -0,0 +1,45 @@
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel in)
public java.lang.Object createFromParcel(android.os.Parcel p0)
public final User[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final int age
private final java.lang.String firstName
private final boolean isProUser
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser)
public int describeContents() {
LABEL (L0)
LINENUMBER (9)
BIPUSH (100)
IRETURN
LABEL (L1)
}
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public final boolean isProUser()
public void writeToParcel(android.os.Parcel parcel, int flags)
}
@@ -0,0 +1,69 @@
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
LDC (Ltest/Foo;)
INVOKEVIRTUAL (java/lang/Class, getClassLoader, ()Ljava/lang/ClassLoader;)
INVOKEVIRTUAL (android/os/Parcel, readParcelable, (Ljava/lang/ClassLoader;)Landroid/os/Parcelable;)
CHECKCAST
INVOKESPECIAL (test/Foo, <init>, (Landroid/accounts/Account;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
LABEL (L1)
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.accounts.Account kp
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(android.accounts.Account kp)
public int describeContents()
public final android.accounts.Account getKp()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (kp, Landroid/accounts/Account;)
CHECKCAST
ILOAD (2)
INVOKEVIRTUAL (android/os/Parcel, writeParcelable, (Landroid/os/Parcelable;I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,11 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel, <clinit>
// WITH_RUNTIME
package test
import kotlinx.parcelize.*
import android.os.*
import android.accounts.Account
@Parcelize
class Foo(val kp: Account): Parcelable
@@ -0,0 +1,67 @@
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
LDC (Ltest/Foo;)
INVOKEVIRTUAL (java/lang/Class, getClassLoader, ()Ljava/lang/ClassLoader;)
INVOKEVIRTUAL (android/os/Parcel, readParcelable, (Ljava/lang/ClassLoader;)Landroid/os/Parcelable;)
CHECKCAST
INVOKESPECIAL (test/Foo, <init>, (Landroid/accounts/Account;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (11)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.accounts.Account kp
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(android.accounts.Account kp)
public int describeContents()
public final android.accounts.Account getKp()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (kp, Landroid/accounts/Account;)
ILOAD (2)
INVOKEVIRTUAL (android/os/Parcel, writeParcelable, (Landroid/os/Parcelable;I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,169 @@
public final class k/KotlinParcelable$Companion : java/lang/Object {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
}
public final class k/KotlinParcelable$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public k.KotlinParcelable createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (1)
LDC (source)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (23)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
ISTORE (2)
LABEL (L2)
LINENUMBER (24)
NEW
DUP
ILOAD (2)
INVOKESPECIAL (k/KotlinParcelable, <init>, (I)V)
ARETURN
LABEL (L3)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (k/KotlinParcelable$Creator, createFromParcel, (Landroid/os/Parcel;)Lk/KotlinParcelable;)
ARETURN
LABEL (L1)
}
public k.KotlinParcelable[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class k/KotlinParcelable : java/lang/Object, android/os/Parcelable {
public final static k.KotlinParcelable$Creator CREATOR
public final static k.KotlinParcelable$Companion Companion
private int data
static void <clinit>() {
NEW
DUP
ACONST_NULL
INVOKESPECIAL (k/KotlinParcelable$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Companion, Lk/KotlinParcelable$Companion;)
LABEL (L0)
LINENUMBER (18)
NEW
DUP
INVOKESPECIAL (k/KotlinParcelable$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Lk/KotlinParcelable$Creator;)
RETURN
}
public void <init>(int data)
public final int component1()
public final k.KotlinParcelable copy(int data)
public static k.KotlinParcelable copy$default(k.KotlinParcelable p0, int p1, int p2, java.lang.Object p3)
public int describeContents()
public boolean equals(java.lang.Object other)
public final int getData()
public int hashCode()
public final void setData(int <set-?>)
public java.lang.String toString()
public void writeToParcel(android.os.Parcel dest, int flags) {
LABEL (L0)
ALOAD (1)
LDC (dest)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (13)
ALOAD (1)
ALOAD (0)
GETFIELD (data, I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
LABEL (L2)
LINENUMBER (14)
RETURN
LABEL (L3)
}
}
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
GETSTATIC (CREATOR, Lk/KotlinParcelable$Creator;)
ALOAD (1)
INVOKEVIRTUAL (k/KotlinParcelable$Creator, createFromParcel, (Landroid/os/Parcel;)Lk/KotlinParcelable;)
INVOKESPECIAL (test/Foo, <init>, (Lk/KotlinParcelable;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
LABEL (L1)
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final k.KotlinParcelable kp
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(k.KotlinParcelable kp)
public int describeContents()
public final k.KotlinParcelable getKp()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (0)
GETFIELD (kp, Lk/KotlinParcelable;)
ALOAD (1)
ILOAD (2)
INVOKEVIRTUAL (k/KotlinParcelable, writeToParcel, (Landroid/os/Parcel;I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,40 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel, <clinit>
// WITH_RUNTIME
// FILE: KotlinParcelable.kt
package k
import android.os.*
data class KotlinParcelable(var data: Int): Parcelable {
override fun describeContents() = 1
override fun writeToParcel(dest: Parcel, flags: Int) {
dest.writeInt(data)
}
companion object {
@JvmField
val CREATOR = Creator()
}
class Creator : Parcelable.Creator<KotlinParcelable> {
override fun createFromParcel(source: Parcel): KotlinParcelable {
val data = source.readInt()
return KotlinParcelable(data)
}
override fun newArray(size: Int) = arrayOfNulls<KotlinParcelable>(size)
}
}
// FILE: test.kt
package test
import kotlinx.parcelize.*
import android.os.*
import k.*
@Parcelize
class Foo(val kp: KotlinParcelable): Parcelable
@@ -0,0 +1,170 @@
public final class k/KotlinParcelable$Companion : java/lang/Object {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
}
public final class k/KotlinParcelable$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public k.KotlinParcelable createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (1)
LDC (source)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (23)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
ISTORE (2)
LABEL (L2)
LINENUMBER (24)
NEW
DUP
ILOAD (2)
INVOKESPECIAL (k/KotlinParcelable, <init>, (I)V)
ARETURN
LABEL (L3)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (21)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (k/KotlinParcelable$Creator, createFromParcel, (Landroid/os/Parcel;)Lk/KotlinParcelable;)
ARETURN
}
public k.KotlinParcelable[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class k/KotlinParcelable : java/lang/Object, android/os/Parcelable {
public final static k.KotlinParcelable$Creator CREATOR
public final static k.KotlinParcelable$Companion Companion
private int data
static void <clinit>() {
NEW
DUP
ACONST_NULL
INVOKESPECIAL (k/KotlinParcelable$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Companion, Lk/KotlinParcelable$Companion;)
LABEL (L0)
LINENUMBER (18)
NEW
DUP
INVOKESPECIAL (k/KotlinParcelable$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Lk/KotlinParcelable$Creator;)
RETURN
}
public void <init>(int data)
public final int component1()
public final k.KotlinParcelable copy(int data)
public static k.KotlinParcelable copy$default(k.KotlinParcelable p0, int p1, int p2, java.lang.Object p3)
public int describeContents()
public boolean equals(java.lang.Object p0)
public final int getData()
public int hashCode()
public final void setData(int <set-?>)
public java.lang.String toString()
public void writeToParcel(android.os.Parcel dest, int flags) {
LABEL (L0)
ALOAD (1)
LDC (dest)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (13)
ALOAD (1)
ALOAD (0)
GETFIELD (data, I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
LABEL (L2)
LINENUMBER (14)
RETURN
LABEL (L3)
}
}
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
LDC (Ltest/Foo;)
INVOKEVIRTUAL (java/lang/Class, getClassLoader, ()Ljava/lang/ClassLoader;)
INVOKEVIRTUAL (android/os/Parcel, readParcelable, (Ljava/lang/ClassLoader;)Landroid/os/Parcelable;)
CHECKCAST
INVOKESPECIAL (test/Foo, <init>, (Lk/KotlinParcelable;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (9)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final k.KotlinParcelable kp
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(k.KotlinParcelable kp)
public int describeContents()
public final k.KotlinParcelable getKp()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (kp, Lk/KotlinParcelable;)
ILOAD (2)
INVOKEVIRTUAL (android/os/Parcel, writeParcelable, (Landroid/os/Parcelable;I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,115 @@
final class User$Companion : java/lang/Object, kotlinx/parcelize/Parceler {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
public User create(android.os.Parcel parcel)
public java.lang.Object create(android.os.Parcel parcel)
public User[] newArray(int size) {
LABEL (L0)
LINENUMBER (10)
ALOAD (0)
ILOAD (1)
INVOKESTATIC (kotlinx/parcelize/Parceler$DefaultImpls, newArray, (Lkotlinx/parcelize/Parceler;I)[Ljava/lang/Object;)
CHECKCAST
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int size) {
LABEL (L0)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Companion, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
public void write(User $this$write, android.os.Parcel parcel, int flags)
public void write(java.lang.Object $this$write, android.os.Parcel parcel, int flags)
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (User, access$getCompanion$p$s2645995, ()LUser$Companion;)
ALOAD (1)
INVOKEVIRTUAL (User$Companion, create, (Landroid/os/Parcel;)LUser;)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
LABEL (L1)
}
public final User[] newArray(int size) {
LABEL (L0)
ILOAD (1)
ANEWARRAY
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int size) {
LABEL (L0)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Creator, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final static User$Companion Companion
private final int age
private final java.lang.String firstName
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age)
public final static User$Companion access$getCompanion$p$s2645995()
public int describeContents()
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
GETSTATIC (Companion, LUser$Companion;)
ALOAD (0)
ALOAD (1)
ILOAD (2)
INVOKEVIRTUAL (User$Companion, write, (LUser;Landroid/os/Parcel;I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,19 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel, newArray
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcel
import android.os.Parcelable
@Parcelize
class User(val firstName: String, val lastName: String, val age: Int) : Parcelable {
private companion object : Parceler<User> {
override fun User.write(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeString(lastName)
parcel.writeInt(age)
}
override fun create(parcel: Parcel) = User(parcel.readString(), parcel.readString(), parcel.readInt())
}
}
@@ -0,0 +1,113 @@
final class User$Companion : java/lang/Object, kotlinx/parcelize/Parceler {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
public User create(android.os.Parcel parcel)
public java.lang.Object create(android.os.Parcel p0)
public User[] newArray(int size) {
LABEL (L0)
LINENUMBER (10)
ALOAD (0)
ILOAD (1)
INVOKESTATIC (kotlinx/parcelize/Parceler$DefaultImpls, newArray, (Lkotlinx/parcelize/Parceler;I)[Ljava/lang/Object;)
CHECKCAST
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int p0) {
LABEL (L0)
LINENUMBER (10)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Companion, newArray, (I)[LUser;)
ARETURN
}
public void write(User $this$write, android.os.Parcel parcel, int flags)
public void write(java.lang.Object p0, android.os.Parcel p1, int p2)
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
GETSTATIC (Companion, LUser$Companion;)
ALOAD (1)
INVOKEVIRTUAL (User$Companion, create, (Landroid/os/Parcel;)LUser;)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (9)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
}
public final User[] newArray(int size) {
LABEL (L0)
ILOAD (1)
ANEWARRAY
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int p0) {
LABEL (L0)
LINENUMBER (9)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Creator, newArray, (I)[LUser;)
ARETURN
}
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final static User$Companion Companion
private final int age
private final java.lang.String firstName
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age)
public int describeContents()
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
GETSTATIC (Companion, LUser$Companion;)
ALOAD (0)
ALOAD (1)
ILOAD (2)
INVOKEVIRTUAL (User$Companion, write, (LUser;Landroid/os/Parcel;I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,85 @@
final class User$Companion : java/lang/Object, kotlinx/parcelize/Parceler {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
public User create(android.os.Parcel parcel)
public java.lang.Object create(android.os.Parcel parcel)
public User[] newArray(int size) {
LABEL (L0)
LINENUMBER (19)
ILOAD (1)
ANEWARRAY
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int size) {
LABEL (L0)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Companion, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
public void write(User $this$write, android.os.Parcel parcel, int flags)
public void write(java.lang.Object $this$write, android.os.Parcel parcel, int flags)
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final User[] newArray(int size) {
LABEL (L0)
INVOKESTATIC (User, access$getCompanion$p$s2645995, ()LUser$Companion;)
ILOAD (1)
INVOKEVIRTUAL (User$Companion, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int size) {
LABEL (L0)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Creator, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final static User$Companion Companion
private final int age
private final java.lang.String firstName
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age)
public final static User$Companion access$getCompanion$p$s2645995()
public int describeContents()
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public void writeToParcel(android.os.Parcel out, int flags)
}
@@ -0,0 +1,21 @@
// CURIOUS_ABOUT newArray
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcel
import android.os.Parcelable
@Parcelize
class User(val firstName: String, val lastName: String, val age: Int) : Parcelable {
private companion object : Parceler<User> {
override fun User.write(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeString(lastName)
parcel.writeInt(age)
}
override fun create(parcel: Parcel) = User(parcel.readString(), parcel.readString(), parcel.readInt())
override fun newArray(size: Int) = arrayOfNulls<User>(size) as Array<User>
}
}
@@ -0,0 +1,83 @@
final class User$Companion : java/lang/Object, kotlinx/parcelize/Parceler {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
public User create(android.os.Parcel parcel)
public java.lang.Object create(android.os.Parcel p0)
public User[] newArray(int size) {
LABEL (L0)
LINENUMBER (19)
ILOAD (1)
ANEWARRAY
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int p0) {
LABEL (L0)
LINENUMBER (10)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Companion, newArray, (I)[LUser;)
ARETURN
}
public void write(User $this$write, android.os.Parcel parcel, int flags)
public void write(java.lang.Object p0, android.os.Parcel p1, int p2)
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel in)
public java.lang.Object createFromParcel(android.os.Parcel p0)
public final User[] newArray(int size) {
LABEL (L0)
GETSTATIC (Companion, LUser$Companion;)
ILOAD (1)
INVOKEVIRTUAL (User$Companion, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int p0) {
LABEL (L0)
LINENUMBER (9)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Creator, newArray, (I)[LUser;)
ARETURN
}
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final static User$Companion Companion
private final int age
private final java.lang.String firstName
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age)
public int describeContents()
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public void writeToParcel(android.os.Parcel parcel, int flags)
}
@@ -0,0 +1,49 @@
public abstract class AbstractUser : java/lang/Object, android/os/Parcelable {
public void <init>()
public int describeContents() {
LABEL (L0)
LINENUMBER (8)
BIPUSH (100)
IRETURN
LABEL (L1)
}
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final User[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class User : AbstractUser {
public final static android.os.Parcelable$Creator CREATOR
private final int age
private final java.lang.String firstName
private final boolean isProUser
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser)
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public final boolean isProUser()
public void writeToParcel(android.os.Parcel out, int flags)
}
@@ -0,0 +1,12 @@
// CURIOUS_ABOUT describeContents
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcelable
abstract class AbstractUser : Parcelable {
override fun describeContents() = 100
}
@Parcelize
class User(val firstName: String, val lastName: String, val age: Int, val isProUser: Boolean) : AbstractUser()
@@ -0,0 +1,49 @@
public abstract class AbstractUser : java/lang/Object, android/os/Parcelable {
public void <init>()
public int describeContents() {
LABEL (L0)
LINENUMBER (8)
BIPUSH (100)
IRETURN
LABEL (L1)
}
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel in)
public java.lang.Object createFromParcel(android.os.Parcel p0)
public final User[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class User : AbstractUser {
public final static android.os.Parcelable$Creator CREATOR
private final int age
private final java.lang.String firstName
private final boolean isProUser
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser)
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public final boolean isProUser()
public void writeToParcel(android.os.Parcel parcel, int flags)
}
@@ -0,0 +1,57 @@
public final class User$Companion : java/lang/Object {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
private static void getTest$annotations()
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final User[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
public final static User$Companion Companion
private final java.lang.String firstName
private final static java.lang.StringBuilder test
static void <clinit>() {
NEW
DUP
ACONST_NULL
INVOKESPECIAL (User$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Companion, LUser$Companion;)
NEW
DUP
INVOKESPECIAL (User$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
LABEL (L0)
LINENUMBER (12)
NEW
DUP
INVOKESPECIAL (java/lang/StringBuilder, <init>, ()V)
PUTSTATIC (test, Ljava/lang/StringBuilder;)
RETURN
}
public void <init>(java.lang.String firstName)
public int describeContents()
public final java.lang.String getFirstName()
public void writeToParcel(android.os.Parcel out, int flags)
}
@@ -0,0 +1,14 @@
// CURIOUS_ABOUT <clinit>
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcelable
import kotlin.jvm.JvmStatic
@Parcelize
class User(val firstName: String) : Parcelable {
companion object {
@JvmStatic
private val test = StringBuilder()
}
}
@@ -0,0 +1,56 @@
public final class User$Companion : java/lang/Object {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
private static void getTest$annotations()
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel in)
public java.lang.Object createFromParcel(android.os.Parcel p0)
public final User[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
public final static User$Companion Companion
private final java.lang.String firstName
private final static java.lang.StringBuilder test
static void <clinit>() {
NEW
DUP
ACONST_NULL
INVOKESPECIAL (User$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Companion, LUser$Companion;)
LABEL (L0)
LINENUMBER (12)
NEW
DUP
INVOKESPECIAL (java/lang/StringBuilder, <init>, ()V)
PUTSTATIC (test, Ljava/lang/StringBuilder;)
NEW
DUP
INVOKESPECIAL (User$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(java.lang.String firstName)
public int describeContents()
public final java.lang.String getFirstName()
public void writeToParcel(android.os.Parcel parcel, int flags)
}
@@ -0,0 +1,156 @@
public final class test/Bar$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Bar createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFNE (L2)
ACONST_NULL
GOTO (L3)
LABEL (L2)
GETSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
ALOAD (1)
INVOKEINTERFACE (android/os/Parcelable$Creator, createFromParcel, (Landroid/os/Parcel;)Ljava/lang/Object;)
LABEL (L3)
CHECKCAST
INVOKESPECIAL (test/Bar, <init>, (Ltest/Foo;)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Bar$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Bar;)
ARETURN
LABEL (L1)
}
public final test.Bar[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class test/Bar : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final test.Foo foo
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Bar$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(test.Foo foo)
public int describeContents()
public final test.Foo getFoo()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (0)
GETFIELD (foo, Ltest/Foo;)
ASTORE (3)
ALOAD (3)
IFNONNULL (L1)
ALOAD (1)
ICONST_0
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
GOTO (L2)
LABEL (L1)
ALOAD (1)
ICONST_1
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (3)
ALOAD (1)
ILOAD (2)
INVOKEVIRTUAL (test/Foo, writeToParcel, (Landroid/os/Parcel;I)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
GETSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
ALOAD (1)
INVOKEINTERFACE (android/os/Parcelable$Creator, createFromParcel, (Landroid/os/Parcel;)Ljava/lang/Object;)
CHECKCAST
INVOKESPECIAL (test/Foo, <init>, (Ltest/Bar;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
LABEL (L1)
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final test.Bar bar
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(test.Bar bar)
public int describeContents()
public final test.Bar getBar()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (0)
GETFIELD (bar, Ltest/Bar;)
ALOAD (1)
ILOAD (2)
INVOKEVIRTUAL (test/Bar, writeToParcel, (Landroid/os/Parcel;I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,13 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel, <clinit>
// WITH_RUNTIME
//FILE: test.kt
package test
import kotlinx.parcelize.*
import android.os.Parcelable
@Parcelize
class Foo(val bar: Bar): Parcelable
@Parcelize
class Bar(val foo: Foo?) : Parcelable
@@ -0,0 +1,156 @@
public final class test/Bar$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Bar createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFEQ (L2)
ALOAD (1)
GETSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
SWAP
INVOKEINTERFACE (android/os/Parcelable$Creator, createFromParcel, (Landroid/os/Parcel;)Ljava/lang/Object;)
CHECKCAST
GOTO (L3)
LABEL (L2)
ACONST_NULL
LABEL (L3)
INVOKESPECIAL (test/Bar, <init>, (Ltest/Foo;)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (13)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Bar$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Bar;)
ARETURN
}
public final test.Bar[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class test/Bar : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final test.Foo foo
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Bar$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(test.Foo foo)
public int describeContents()
public final test.Foo getFoo()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (foo, Ltest/Foo;)
DUP
IFNULL (L1)
ALOAD (1)
LDC (1)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
SWAP
LDC (0)
INVOKEINTERFACE (android/os/Parcelable, writeToParcel, (Landroid/os/Parcel;I)V)
GOTO (L2)
LABEL (L1)
POP
LDC (0)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
GETSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
SWAP
INVOKEINTERFACE (android/os/Parcelable$Creator, createFromParcel, (Landroid/os/Parcel;)Ljava/lang/Object;)
CHECKCAST
INVOKESPECIAL (test/Foo, <init>, (Ltest/Bar;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (10)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final test.Bar bar
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(test.Bar bar)
public int describeContents()
public final test.Bar getBar()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (bar, Ltest/Bar;)
SWAP
LDC (0)
INVOKEINTERFACE (android/os/Parcelable, writeToParcel, (Landroid/os/Parcel;I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,53 @@
public final class test/SomeClass$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.SomeClass createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
POP
NEW
DUP
INVOKESPECIAL (test/SomeClass, <init>, ()V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/SomeClass$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/SomeClass;)
ARETURN
LABEL (L1)
}
public final test.SomeClass[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class test/SomeClass : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
static void <clinit>()
public void <init>()
public int describeContents()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ICONST_1
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,10 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel
// WITH_RUNTIME
package test
import kotlinx.parcelize.*
import android.os.Parcelable
@Parcelize
class SomeClass : Parcelable
@@ -0,0 +1,71 @@
public final class test/SomeClass$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.SomeClass createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFEQ (L2)
NEW
DUP
INVOKESPECIAL (test/SomeClass, <init>, ()V)
GOTO (L3)
LABEL (L2)
ACONST_NULL
LABEL (L3)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (10)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/SomeClass$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/SomeClass;)
ARETURN
}
public final test.SomeClass[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class test/SomeClass : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
static void <clinit>()
public void <init>()
public int describeContents()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
DUP
IFNULL (L1)
ALOAD (1)
LDC (1)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
POP2
GOTO (L2)
LABEL (L1)
POP
LDC (0)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
@@ -0,0 +1,70 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final java.util.List names
static void <clinit>()
public void <init>(java.util.List names)
public int describeContents()
public final java.util.List getNames()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (0)
GETFIELD (names, Ljava/util/List;)
ASTORE (3)
ALOAD (1)
ALOAD (3)
INVOKEINTERFACE (java/util/List, size, ()I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (3)
INVOKEINTERFACE (java/util/List, iterator, ()Ljava/util/Iterator;)
ASTORE (4)
LABEL (L1)
ALOAD (4)
INVOKEINTERFACE (java/util/Iterator, hasNext, ()Z)
IFEQ (L2)
ALOAD (4)
INVOKEINTERFACE (java/util/Iterator, next, ()Ljava/lang/Object;)
CHECKCAST
ASTORE (5)
ALOAD (1)
ALOAD (5)
INVOKEINTERFACE (java/util/List, size, ()I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (5)
INVOKEINTERFACE (java/util/List, iterator, ()Ljava/util/Iterator;)
ASTORE (6)
LABEL (L3)
ALOAD (6)
INVOKEINTERFACE (java/util/Iterator, hasNext, ()Z)
IFEQ (L1)
ALOAD (1)
ALOAD (6)
INVOKEINTERFACE (java/util/Iterator, next, ()Ljava/lang/Object;)
CHECKCAST
INVOKEVIRTUAL (android/os/Parcel, writeStringList, (Ljava/util/List;)V)
GOTO (L3)
LABEL (L2)
RETURN
LABEL (L4)
}
}
@@ -0,0 +1,8 @@
// CURIOUS_ABOUT writeToParcel
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcelable
@Parcelize
class Test(val names: List<List<ArrayList<String>>>): Parcelable
@@ -0,0 +1,86 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel in)
public java.lang.Object createFromParcel(android.os.Parcel p0)
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final java.util.List names
static void <clinit>()
public void <init>(java.util.List names)
public int describeContents()
public final java.util.List getNames()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (names, Ljava/util/List;)
DUP_X1
INVOKEINTERFACE (java/util/Collection, size, ()I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
INVOKEINTERFACE (java/util/Collection, iterator, ()Ljava/util/Iterator;)
LABEL (L1)
DUP
INVOKEINTERFACE (java/util/Iterator, hasNext, ()Z)
IFEQ (L2)
DUP
ALOAD (1)
SWAP
INVOKEINTERFACE (java/util/Iterator, next, ()Ljava/lang/Object;)
CHECKCAST
DUP_X1
INVOKEINTERFACE (java/util/Collection, size, ()I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
INVOKEINTERFACE (java/util/Collection, iterator, ()Ljava/util/Iterator;)
LABEL (L3)
DUP
INVOKEINTERFACE (java/util/Iterator, hasNext, ()Z)
IFEQ (L4)
DUP
ALOAD (1)
SWAP
INVOKEINTERFACE (java/util/Iterator, next, ()Ljava/lang/Object;)
CHECKCAST
DUP_X1
INVOKEINTERFACE (java/util/Collection, size, ()I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
INVOKEINTERFACE (java/util/Collection, iterator, ()Ljava/util/Iterator;)
LABEL (L5)
DUP
INVOKEINTERFACE (java/util/Iterator, hasNext, ()Z)
IFEQ (L6)
DUP
ALOAD (1)
SWAP
INVOKEINTERFACE (java/util/Iterator, next, ()Ljava/lang/Object;)
CHECKCAST
INVOKEVIRTUAL (android/os/Parcel, writeString, (Ljava/lang/String;)V)
GOTO (L5)
LABEL (L6)
POP
GOTO (L3)
LABEL (L4)
POP
GOTO (L1)
LABEL (L2)
POP
RETURN
LABEL (L7)
}
}
@@ -0,0 +1,90 @@
public final class TestNotNull$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final TestNotNull createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final TestNotNull[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class TestNotNull : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size a
static void <clinit>()
public void <init>(android.util.Size a)
public int describeContents()
public final android.util.Size getA()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (a, Landroid/util/Size;)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
RETURN
LABEL (L1)
}
}
public final class TestNullable$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final TestNullable createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final TestNullable[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class TestNullable : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size a
static void <clinit>()
public void <init>(android.util.Size a)
public int describeContents()
public final android.util.Size getA()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (0)
GETFIELD (a, Landroid/util/Size;)
ASTORE (3)
ALOAD (3)
IFNONNULL (L1)
ALOAD (1)
ICONST_0
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
GOTO (L2)
LABEL (L1)
ALOAD (1)
ICONST_1
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (1)
ALOAD (3)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
@@ -0,0 +1,12 @@
// CURIOUS_ABOUT writeToParcel
// WITH_RUNTIME
import android.util.Size
import kotlinx.parcelize.*
import android.os.Parcelable
@Parcelize
class TestNullable(val a: Size?): Parcelable
@Parcelize
class TestNotNull(val a: Size): Parcelable
@@ -0,0 +1,88 @@
public final class TestNotNull$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final TestNotNull createFromParcel(android.os.Parcel in)
public java.lang.Object createFromParcel(android.os.Parcel p0)
public final TestNotNull[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class TestNotNull : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size a
static void <clinit>()
public void <init>(android.util.Size a)
public int describeContents()
public final android.util.Size getA()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (a, Landroid/util/Size;)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
RETURN
LABEL (L1)
}
}
public final class TestNullable$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final TestNullable createFromParcel(android.os.Parcel in)
public java.lang.Object createFromParcel(android.os.Parcel p0)
public final TestNullable[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class TestNullable : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size a
static void <clinit>()
public void <init>(android.util.Size a)
public int describeContents()
public final android.util.Size getA()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (a, Landroid/util/Size;)
DUP
IFNULL (L1)
ALOAD (1)
LDC (1)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
GOTO (L2)
LABEL (L1)
POP
LDC (0)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
@@ -0,0 +1,67 @@
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
LDC (Ltest/Foo;)
INVOKEVIRTUAL (java/lang/Class, getClassLoader, ()Ljava/lang/ClassLoader;)
INVOKEVIRTUAL (android/os/Parcel, readParcelable, (Ljava/lang/ClassLoader;)Landroid/os/Parcelable;)
INVOKESPECIAL (test/Foo, <init>, (Landroid/os/Parcelable;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
LABEL (L1)
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.os.Parcelable parcelable
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(android.os.Parcelable parcelable)
public int describeContents()
public final android.os.Parcelable getParcelable()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (parcelable, Landroid/os/Parcelable;)
ILOAD (2)
INVOKEVIRTUAL (android/os/Parcel, writeParcelable, (Landroid/os/Parcelable;I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,37 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel, <clinit>
// WITH_RUNTIME
//FILE: test/JavaClass.java
package test;
class JavaClass {
void test() {
// Here we test access to CREATOR
Object o = Foo.CREATOR;
}
}
//FILE: android/os/Parcel.java
package android.os;
public class Parcel {}
//FILE: android/os/Parcelable.java
package android.os;
public interface Parcelable {
public static interface Creator<T> {
T createFromParcel(Parcel source);
T[] newArray(int size);
}
}
//FILE: test.kt
package test
import kotlinx.parcelize.*
import android.os.Parcelable
@Parcelize
class Foo(val parcelable: Parcelable): Parcelable
@@ -0,0 +1,66 @@
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
LDC (Ltest/Foo;)
INVOKEVIRTUAL (java/lang/Class, getClassLoader, ()Ljava/lang/ClassLoader;)
INVOKEVIRTUAL (android/os/Parcel, readParcelable, (Ljava/lang/ClassLoader;)Landroid/os/Parcelable;)
INVOKESPECIAL (test/Foo, <init>, (Landroid/os/Parcelable;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (8)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.os.Parcelable parcelable
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(android.os.Parcelable parcelable)
public int describeContents()
public final android.os.Parcelable getParcelable()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (parcelable, Landroid/os/Parcelable;)
ILOAD (2)
INVOKEVIRTUAL (android/os/Parcel, writeParcelable, (Landroid/os/Parcelable;I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,90 @@
public final class SerializableSimple : java/lang/Object, java/io/Serializable {
private final java.lang.String a
private final java.lang.String b
public void <init>(java.lang.String a, java.lang.String b)
public final java.lang.String getA()
public final java.lang.String getB()
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSerializable, ()Ljava/io/Serializable;)
CHECKCAST
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSerializable, ()Ljava/io/Serializable;)
CHECKCAST
INVOKESPECIAL (User, <init>, (LSerializableSimple;LSerializableSimple;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
LABEL (L1)
}
public final User[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final SerializableSimple notNull
private final SerializableSimple nullable
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (User$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(SerializableSimple notNull, SerializableSimple nullable)
public int describeContents()
public final SerializableSimple getNotNull()
public final SerializableSimple getNullable()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (notNull, LSerializableSimple;)
CHECKCAST
INVOKEVIRTUAL (android/os/Parcel, writeSerializable, (Ljava/io/Serializable;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (nullable, LSerializableSimple;)
CHECKCAST
INVOKEVIRTUAL (android/os/Parcel, writeSerializable, (Ljava/io/Serializable;)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,11 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel, <clinit>
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcelable
import java.io.Serializable
class SerializableSimple(val a: String, val b: String) : Serializable
@Parcelize
class User(val notNull: SerializableSimple, val nullable: SerializableSimple) : Parcelable
@@ -0,0 +1,87 @@
public final class SerializableSimple : java/lang/Object, java/io/Serializable {
private final java.lang.String a
private final java.lang.String b
public void <init>(java.lang.String a, java.lang.String b)
public final java.lang.String getA()
public final java.lang.String getB()
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSerializable, ()Ljava/io/Serializable;)
CHECKCAST
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSerializable, ()Ljava/io/Serializable;)
CHECKCAST
INVOKESPECIAL (User, <init>, (LSerializableSimple;LSerializableSimple;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (11)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
}
public final User[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final SerializableSimple notNull
private final SerializableSimple nullable
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (User$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(SerializableSimple notNull, SerializableSimple nullable)
public int describeContents()
public final SerializableSimple getNotNull()
public final SerializableSimple getNullable()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (notNull, LSerializableSimple;)
INVOKEVIRTUAL (android/os/Parcel, writeSerializable, (Ljava/io/Serializable;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (nullable, LSerializableSimple;)
INVOKEVIRTUAL (android/os/Parcel, writeSerializable, (Ljava/io/Serializable;)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,80 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
LDC (LTest;)
INVOKEVIRTUAL (java/lang/Class, getClassLoader, ()Ljava/lang/ClassLoader;)
INVOKEVIRTUAL (android/os/Parcel, readValue, (Ljava/lang/ClassLoader;)Ljava/lang/Object;)
CHECKCAST
INVOKESPECIAL (Test, <init>, (LValue;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (Test$Creator, createFromParcel, (Landroid/os/Parcel;)LTest;)
ARETURN
LABEL (L1)
}
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final Value value
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (Test$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(Value value)
public int describeContents() {
LABEL (L0)
ICONST_0
IRETURN
LABEL (L1)
}
public final Value getValue()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (value, LValue;)
INVOKEVIRTUAL (android/os/Parcel, writeValue, (Ljava/lang/Object;)V)
RETURN
LABEL (L1)
}
}
public final class Value : java/lang/Object {
private final int x
public void <init>(int x)
public final int getX()
}
@@ -0,0 +1,10 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel, <clinit>, describeContents
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcelable
class Value(val x: Int)
@Parcelize
class Test(val value: @RawValue Value) : Parcelable
@@ -0,0 +1,79 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
LDC (LValue;)
INVOKEVIRTUAL (java/lang/Class, getClassLoader, ()Ljava/lang/ClassLoader;)
INVOKEVIRTUAL (android/os/Parcel, readValue, (Ljava/lang/ClassLoader;)Ljava/lang/Object;)
CHECKCAST
INVOKESPECIAL (Test, <init>, (LValue;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (10)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (Test$Creator, createFromParcel, (Landroid/os/Parcel;)LTest;)
ARETURN
}
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final Value value
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (Test$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(Value value)
public int describeContents() {
LABEL (L0)
LDC (0)
IRETURN
LABEL (L1)
}
public final Value getValue()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (value, LValue;)
INVOKEVIRTUAL (android/os/Parcel, writeValue, (Ljava/lang/Object;)V)
RETURN
LABEL (L1)
}
}
public final class Value : java/lang/Object {
private final int x
public void <init>(int x)
public final int getX()
}
@@ -0,0 +1,158 @@
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>() {
Local variables:
0 this: LUser$Creator;
}
public final User createFromParcel(android.os.Parcel parcel) {
Local variables:
0 this: LUser$Creator;
1 parcel: Landroid/os/Parcel;
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readString, ()Ljava/lang/String;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readString, ()Ljava/lang/String;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFEQ (L2)
ICONST_1
GOTO (L3)
LABEL (L2)
ICONST_0
LABEL (L3)
INVOKESPECIAL (User, <init>, (Ljava/lang/String;Ljava/lang/String;IZ)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
Local variables:
0 this: LUser$Creator;
1 source: Landroid/os/Parcel;
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
LABEL (L1)
}
public final User[] newArray(int size) {
Local variables:
0 this: LUser$Creator;
1 size: I
}
public java.lang.Object[] newArray(int size) {
Local variables:
0 this: LUser$Creator;
1 size: I
}
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final int age
private final java.lang.String firstName
private final boolean isProUser
private final java.lang.String lastName
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (User$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser) {
Local variables:
0 this: LUser;
1 firstName: Ljava/lang/String;
2 lastName: Ljava/lang/String;
3 age: I
4 isProUser: Z
}
public int describeContents() {
Local variables:
0 this: LUser;
LABEL (L0)
ICONST_0
IRETURN
LABEL (L1)
}
public final int getAge() {
Local variables:
0 this: LUser;
}
public final java.lang.String getFirstName() {
Local variables:
0 this: LUser;
}
public final java.lang.String getLastName() {
Local variables:
0 this: LUser;
}
public final boolean isProUser() {
Local variables:
0 this: LUser;
}
public void writeToParcel(android.os.Parcel out, int flags) {
Local variables:
0 this: LUser;
1 out: Landroid/os/Parcel;
2 flags: I
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (firstName, Ljava/lang/String;)
INVOKEVIRTUAL (android/os/Parcel, writeString, (Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (lastName, Ljava/lang/String;)
INVOKEVIRTUAL (android/os/Parcel, writeString, (Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (age, I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (1)
ALOAD (0)
GETFIELD (isProUser, Z)
IFEQ (L1)
ICONST_1
GOTO (L2)
LABEL (L1)
ICONST_0
LABEL (L2)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
RETURN
LABEL (L3)
}
}
@@ -0,0 +1,9 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel, <clinit>, describeContents
// WITH_RUNTIME
// LOCAL_VARIABLE_TABLE
import kotlinx.parcelize.*
import android.os.Parcelable
@Parcelize
class User(val firstName: String, val lastName: String, val age: Int, val isProUser: Boolean) : Parcelable
@@ -0,0 +1,143 @@
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>() {
Local variables:
0 this: LUser$Creator;
}
public final User createFromParcel(android.os.Parcel in) {
Local variables:
0 this: LUser$Creator;
1 in: Landroid/os/Parcel;
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readString, ()Ljava/lang/String;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readString, ()Ljava/lang/String;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFEQ (L2)
ICONST_1
GOTO (L3)
LABEL (L2)
ICONST_0
LABEL (L3)
INVOKESPECIAL (User, <init>, (Ljava/lang/String;Ljava/lang/String;IZ)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (9)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
}
public final User[] newArray(int size) {
Local variables:
0 this: LUser$Creator;
1 size: I
}
public java.lang.Object[] newArray(int p0)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final int age
private final java.lang.String firstName
private final boolean isProUser
private final java.lang.String lastName
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (User$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser) {
Local variables:
0 this: LUser;
1 firstName: Ljava/lang/String;
2 lastName: Ljava/lang/String;
3 age: I
4 isProUser: Z
}
public int describeContents() {
Local variables:
0 this: LUser;
LABEL (L0)
LDC (0)
IRETURN
LABEL (L1)
}
public final int getAge() {
Local variables:
0 this: LUser;
}
public final java.lang.String getFirstName() {
Local variables:
0 this: LUser;
}
public final java.lang.String getLastName() {
Local variables:
0 this: LUser;
}
public final boolean isProUser() {
Local variables:
0 this: LUser;
}
public void writeToParcel(android.os.Parcel parcel, int flags) {
Local variables:
0 this: LUser;
1 parcel: Landroid/os/Parcel;
2 flags: I
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (firstName, Ljava/lang/String;)
INVOKEVIRTUAL (android/os/Parcel, writeString, (Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (lastName, Ljava/lang/String;)
INVOKEVIRTUAL (android/os/Parcel, writeString, (Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (age, I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (1)
ALOAD (0)
GETFIELD (isProUser, Z)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,38 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final java.util.List names
static void <clinit>()
public void <init>(java.util.List names)
public int describeContents()
public final java.util.List getNames()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (names, Ljava/util/List;)
INVOKEVIRTUAL (android/os/Parcel, writeStringList, (Ljava/util/List;)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,8 @@
// CURIOUS_ABOUT writeToParcel
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcelable
@Parcelize
class Test(val names: List<String>): Parcelable
@@ -0,0 +1,38 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel in)
public java.lang.Object createFromParcel(android.os.Parcel p0)
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final java.util.List names
static void <clinit>()
public void <init>(java.util.List names)
public int describeContents()
public final java.util.List getNames()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (names, Ljava/util/List;)
INVOKEVIRTUAL (android/os/Parcel, writeStringList, (Ljava/util/List;)V)
RETURN
LABEL (L1)
}
}
@@ -0,0 +1,205 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSize, ()Landroid/util/Size;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFNE (L2)
ACONST_NULL
GOTO (L3)
LABEL (L2)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSize, ()Landroid/util/Size;)
LABEL (L3)
INVOKESPECIAL (Test, <init>, (Landroid/util/Size;Landroid/util/Size;)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (Test$Creator, createFromParcel, (Landroid/os/Parcel;)LTest;)
ARETURN
LABEL (L1)
}
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size nullable
private final android.util.Size size
static void <clinit>()
public void <init>(android.util.Size size, android.util.Size nullable)
public final android.util.Size component1()
public final android.util.Size component2()
public final Test copy(android.util.Size size, android.util.Size nullable)
public static Test copy$default(Test p0, android.util.Size p1, android.util.Size p2, int p3, java.lang.Object p4)
public int describeContents()
public boolean equals(java.lang.Object other)
public final android.util.Size getNullable()
public final android.util.Size getSize()
public int hashCode()
public java.lang.String toString()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (size, Landroid/util/Size;)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
ALOAD (0)
GETFIELD (nullable, Landroid/util/Size;)
ASTORE (3)
ALOAD (3)
IFNONNULL (L1)
ALOAD (1)
ICONST_0
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
GOTO (L2)
LABEL (L1)
ALOAD (1)
ICONST_1
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (1)
ALOAD (3)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
public final class TestF$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final TestF createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSizeF, ()Landroid/util/SizeF;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFNE (L2)
ACONST_NULL
GOTO (L3)
LABEL (L2)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSizeF, ()Landroid/util/SizeF;)
LABEL (L3)
INVOKESPECIAL (TestF, <init>, (Landroid/util/SizeF;Landroid/util/SizeF;)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (TestF$Creator, createFromParcel, (Landroid/os/Parcel;)LTestF;)
ARETURN
LABEL (L1)
}
public final TestF[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class TestF : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.SizeF nullable
private final android.util.SizeF size
static void <clinit>()
public void <init>(android.util.SizeF size, android.util.SizeF nullable)
public final android.util.SizeF component1()
public final android.util.SizeF component2()
public final TestF copy(android.util.SizeF size, android.util.SizeF nullable)
public static TestF copy$default(TestF p0, android.util.SizeF p1, android.util.SizeF p2, int p3, java.lang.Object p4)
public int describeContents()
public boolean equals(java.lang.Object other)
public final android.util.SizeF getNullable()
public final android.util.SizeF getSize()
public int hashCode()
public java.lang.String toString()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (size, Landroid/util/SizeF;)
INVOKEVIRTUAL (android/os/Parcel, writeSizeF, (Landroid/util/SizeF;)V)
ALOAD (0)
GETFIELD (nullable, Landroid/util/SizeF;)
ASTORE (3)
ALOAD (3)
IFNONNULL (L1)
ALOAD (1)
ICONST_0
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
GOTO (L2)
LABEL (L1)
ALOAD (1)
ICONST_1
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (1)
ALOAD (3)
INVOKEVIRTUAL (android/os/Parcel, writeSizeF, (Landroid/util/SizeF;)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
@@ -0,0 +1,13 @@
// CURIOUS_ABOUT writeToParcel, createFromParcel
// WITH_RUNTIME
import kotlinx.parcelize.*
import android.os.Parcelable
import android.util.Size
import android.util.SizeF
@Parcelize
data class Test(val size: Size, val nullable: Size?) : Parcelable
@Parcelize
data class TestF(val size: SizeF, val nullable: SizeF?) : Parcelable
@@ -0,0 +1,201 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSize, ()Landroid/util/Size;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFEQ (L2)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSize, ()Landroid/util/Size;)
GOTO (L3)
LABEL (L2)
ACONST_NULL
LABEL (L3)
INVOKESPECIAL (Test, <init>, (Landroid/util/Size;Landroid/util/Size;)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (10)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (Test$Creator, createFromParcel, (Landroid/os/Parcel;)LTest;)
ARETURN
}
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size nullable
private final android.util.Size size
static void <clinit>()
public void <init>(android.util.Size size, android.util.Size nullable)
public final android.util.Size component1()
public final android.util.Size component2()
public final Test copy(android.util.Size size, android.util.Size nullable)
public static Test copy$default(Test p0, android.util.Size p1, android.util.Size p2, int p3, java.lang.Object p4)
public int describeContents()
public boolean equals(java.lang.Object p0)
public final android.util.Size getNullable()
public final android.util.Size getSize()
public int hashCode()
public java.lang.String toString()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (size, Landroid/util/Size;)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (nullable, Landroid/util/Size;)
DUP
IFNULL (L1)
ALOAD (1)
LDC (1)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
GOTO (L2)
LABEL (L1)
POP
LDC (0)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
public final class TestF$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final TestF createFromParcel(android.os.Parcel in) {
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSizeF, ()Landroid/util/SizeF;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFEQ (L2)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSizeF, ()Landroid/util/SizeF;)
GOTO (L3)
LABEL (L2)
ACONST_NULL
LABEL (L3)
INVOKESPECIAL (TestF, <init>, (Landroid/util/SizeF;Landroid/util/SizeF;)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
LINENUMBER (13)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (TestF$Creator, createFromParcel, (Landroid/os/Parcel;)LTestF;)
ARETURN
}
public final TestF[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class TestF : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.SizeF nullable
private final android.util.SizeF size
static void <clinit>()
public void <init>(android.util.SizeF size, android.util.SizeF nullable)
public final android.util.SizeF component1()
public final android.util.SizeF component2()
public final TestF copy(android.util.SizeF size, android.util.SizeF nullable)
public static TestF copy$default(TestF p0, android.util.SizeF p1, android.util.SizeF p2, int p3, java.lang.Object p4)
public int describeContents()
public boolean equals(java.lang.Object p0)
public final android.util.SizeF getNullable()
public final android.util.SizeF getSize()
public int hashCode()
public java.lang.String toString()
public void writeToParcel(android.os.Parcel parcel, int flags) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (size, Landroid/util/SizeF;)
INVOKEVIRTUAL (android/os/Parcel, writeSizeF, (Landroid/util/SizeF;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (nullable, Landroid/util/SizeF;)
DUP
IFNULL (L1)
ALOAD (1)
LDC (1)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
INVOKEVIRTUAL (android/os/Parcel, writeSizeF, (Landroid/util/SizeF;)V)
GOTO (L2)
LABEL (L1)
POP
LDC (0)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}