From 19eb30b3aeafd90495f73ef30defbca5be5bb3c5 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Fri, 30 Jun 2017 19:42:11 +0300 Subject: [PATCH] Parcelable: Add test for clinit merging --- .../parcel/codegen/duplicatingClinit.kt | 14 +++++ .../parcel/codegen/duplicatingClinit.txt | 60 +++++++++++++++++++ .../ParcelBytecodeListingTestGenerated.java | 6 ++ 3 files changed, 80 insertions(+) create mode 100644 plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.kt create mode 100644 plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.txt diff --git a/plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.kt b/plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.kt new file mode 100644 index 00000000000..55291cab7da --- /dev/null +++ b/plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.kt @@ -0,0 +1,14 @@ +// CURIOUS_ABOUT +// WITH_RUNTIME + +import kotlinx.android.parcel.* +import android.os.Parcelable +import kotlin.jvm.JvmStatic + +@MagicParcel +class User(val firstName: String) : Parcelable { + companion object { + @JvmStatic + private val test = StringBuilder() + } +} \ No newline at end of file diff --git a/plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.txt b/plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.txt new file mode 100644 index 00000000000..7fc26586d07 --- /dev/null +++ b/plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.txt @@ -0,0 +1,60 @@ +public static class User$CREATOR : java/lang/Object, android/os/Parcelable$Creator { + public void () + + public final User createFromParcel(android.os.Parcel p0) + + public final User[] newArray(int p0) +} + +public final class User$Companion : java/lang/Object { + private void () + + public void (kotlin.jvm.internal.DefaultConstructorMarker p0) + + public final static java.lang.StringBuilder access$getTest$p(User$Companion p0) + + private final java.lang.StringBuilder getTest() + + private static void test$annotations() +} + +public final class User : java/lang/Object, android/os/Parcelable { + public final static User$CREATOR CREATOR + + public final static User$Companion Companion + + private final java.lang.String firstName + + private final static java.lang.StringBuilder test + + static void () { + NEW + DUP + ACONST_NULL + INVOKESPECIAL (User$Companion, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) + PUTSTATIC (Companion, LUser$Companion;) + LABEL (L0) + LINENUMBER (12) + NEW + DUP + INVOKESPECIAL (java/lang/StringBuilder, , ()V) + PUTSTATIC (test, Ljava/lang/StringBuilder;) + NEW + DUP + INVOKESPECIAL (User$CREATOR, , ()V) + PUTSTATIC (CREATOR, LUser$CREATOR;) + RETURN + } + + public void (java.lang.String p0) + + public final static java.lang.StringBuilder access$getTest$cp() + + public final int describeContents() + + public final java.lang.String getFirstName() + + private final static java.lang.StringBuilder getTest() + + public final void writeToParcel(android.os.Parcel p0, int p1) +} diff --git a/plugins/plugins-tests/tests/org/jetbrains/kotlin/android/parcel/ParcelBytecodeListingTestGenerated.java b/plugins/plugins-tests/tests/org/jetbrains/kotlin/android/parcel/ParcelBytecodeListingTestGenerated.java index 095ab919b77..c62e168dc35 100644 --- a/plugins/plugins-tests/tests/org/jetbrains/kotlin/android/parcel/ParcelBytecodeListingTestGenerated.java +++ b/plugins/plugins-tests/tests/org/jetbrains/kotlin/android/parcel/ParcelBytecodeListingTestGenerated.java @@ -54,6 +54,12 @@ public class ParcelBytecodeListingTestGenerated extends AbstractParcelBytecodeLi doTest(fileName); } + @TestMetadata("duplicatingClinit.kt") + public void testDuplicatingClinit() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.kt"); + doTest(fileName); + } + @TestMetadata("listInsideList.kt") public void testListInsideList() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/listInsideList.kt");