Parcelize: Enable ParcelableDeclarationChecker with the parcelize plugin

Previously, the ParcelableDeclarationChecker was only enabled as part of
the view extensions. In particular, the checker was not enabled for the
parcelize test suite.
This commit is contained in:
Steven Schäfer
2020-05-13 16:08:18 +02:00
committed by Yan Zhulanow
parent f93749ae6a
commit d93e5d3dc0
14 changed files with 35 additions and 25 deletions
@@ -107,6 +107,7 @@ class AndroidComponentRegistrar : ComponentRegistrar {
IrGenerationExtension.registerExtension(project, ParcelableIrGeneratorExtension()) IrGenerationExtension.registerExtension(project, ParcelableIrGeneratorExtension())
SyntheticResolveExtension.registerExtension(project, ParcelableResolveExtension()) SyntheticResolveExtension.registerExtension(project, ParcelableResolveExtension())
ClassBuilderInterceptorExtension.registerExtension(project, ParcelableClinitClassBuilderInterceptorExtension()) ClassBuilderInterceptorExtension.registerExtension(project, ParcelableClinitClassBuilderInterceptorExtension())
StorageComponentContainerContributor.registerExtension(project, ParcelizeDeclarationCheckerComponentContainerContributor())
} }
private fun parseVariant(s: String): AndroidVariant? { private fun parseVariant(s: String): AndroidVariant? {
@@ -168,10 +169,19 @@ class AndroidExtensionPropertiesComponentContainerContributor : StorageComponent
override fun registerModuleComponents( override fun registerModuleComponents(
container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor
) { ) {
if (!platform.isJvm()) return if (platform.isJvm()) {
container.useInstance(AndroidExtensionPropertiesCallChecker())
container.useInstance(AndroidExtensionPropertiesCallChecker()) }
container.useInstance(ParcelableDeclarationChecker()) }
container.useInstance(ParcelableAnnotationChecker()) }
class ParcelizeDeclarationCheckerComponentContainerContributor : StorageComponentContainerContributor {
override fun registerModuleComponents(
container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor
) {
if (platform.isJvm()) {
container.useInstance(ParcelableDeclarationChecker())
container.useInstance(ParcelableAnnotationChecker())
}
} }
} }
@@ -31,7 +31,7 @@ data class Test(
@TypeParceler<Long, Parceler2> val c: Long, @TypeParceler<Long, Parceler2> val c: Long,
@TypeParceler<Int, Parceler1> val d: List<Int>, @TypeParceler<Int, Parceler1> val d: List<Int>,
@TypeParceler<Long, Parceler2> val e: LongArray @TypeParceler<Long, Parceler2> val e: LongArray
) ) : Parcelable
fun box() = parcelTest { parcel -> fun box() = parcelTest { parcel ->
val test = Test(5, 5, 50L, listOf(1, 2, 3), longArrayOf(3, 2, 1)) val test = Test(5, 5, 50L, listOf(1, 2, 3), longArrayOf(3, 2, 1))
@@ -32,7 +32,7 @@ data class Test(
@TypeParceler<String, Parceler1> val b: String, @TypeParceler<String, Parceler1> val b: String,
@TypeParceler<String, Parceler3> val c: CharSequence, @TypeParceler<String, Parceler3> val c: CharSequence,
val d: @WriteWith<Parceler3> String val d: @WriteWith<Parceler3> String
) ) : Parcelable
fun box() = parcelTest { parcel -> fun box() = parcelTest { parcel ->
val test = Test("Abc", "Abc", "Abc", "Abc") val test = Test("Abc", "Abc", "Abc", "Abc")
@@ -33,7 +33,7 @@ data class Test(
val c: List<@WriteWith<Parceler1> String>, val c: List<@WriteWith<Parceler1> String>,
val d: @WriteWith<Parceler2> List<String>, val d: @WriteWith<Parceler2> List<String>,
val e: @WriteWith<Parceler2> List<@WriteWith<Parceler1> String> val e: @WriteWith<Parceler2> List<@WriteWith<Parceler1> String>
) ) : Parcelable
fun box() = parcelTest { parcel -> fun box() = parcelTest { parcel ->
val test = Test("Abc", "Abc", listOf("A", "bc"), listOf("A", "bc"), listOf("A", "bc")) val test = Test("Abc", "Abc", listOf("A", "bc"), listOf("A", "bc"), listOf("A", "bc"))
@@ -10,7 +10,7 @@ public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creato
public java.lang.Object[] newArray(int size) public java.lang.Object[] newArray(int size)
} }
public final class Test : java/lang/Object { public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR public final static android.os.Parcelable$Creator CREATOR
private final java.util.List names private final java.util.List names
@@ -2,6 +2,7 @@
// WITH_RUNTIME // WITH_RUNTIME
import kotlinx.android.parcel.* import kotlinx.android.parcel.*
import android.os.Parcelable
@Parcelize @Parcelize
class Test(val names: List<List<ArrayList<String>>>) class Test(val names: List<List<ArrayList<String>>>) : Parcelable
@@ -10,7 +10,7 @@ public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creato
public java.lang.Object[] newArray(int p0) public java.lang.Object[] newArray(int p0)
} }
public final class Test : java/lang/Object { public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR public final static android.os.Parcelable$Creator CREATOR
private final java.util.List names private final java.util.List names
@@ -10,7 +10,7 @@ public final class TestNotNull$Creator : java/lang/Object, android/os/Parcelable
public java.lang.Object[] newArray(int size) public java.lang.Object[] newArray(int size)
} }
public final class TestNotNull : java/lang/Object { public final class TestNotNull : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size a private final android.util.Size a
@@ -49,7 +49,7 @@ public final class TestNullable$Creator : java/lang/Object, android/os/Parcelabl
public java.lang.Object[] newArray(int size) public java.lang.Object[] newArray(int size)
} }
public final class TestNullable : java/lang/Object { public final class TestNullable : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size a private final android.util.Size a
@@ -3,9 +3,10 @@
import android.util.Size import android.util.Size
import kotlinx.android.parcel.* import kotlinx.android.parcel.*
import android.os.Parcelable
@Parcelize @Parcelize
class TestNullable(val a: Size?) class TestNullable(val a: Size?) : Parcelable
@Parcelize @Parcelize
class TestNotNull(val a: Size) class TestNotNull(val a: Size) : Parcelable
@@ -10,7 +10,7 @@ public final class TestNotNull$Creator : java/lang/Object, android/os/Parcelable
public java.lang.Object[] newArray(int p0) public java.lang.Object[] newArray(int p0)
} }
public final class TestNotNull : java/lang/Object { public final class TestNotNull : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size a private final android.util.Size a
@@ -49,7 +49,7 @@ public final class TestNullable$Creator : java/lang/Object, android/os/Parcelabl
public java.lang.Object[] newArray(int p0) public java.lang.Object[] newArray(int p0)
} }
public final class TestNullable : java/lang/Object { public final class TestNullable : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size a private final android.util.Size a
@@ -1,6 +1,3 @@
// This test checks that we create calls to readValue/writeValue if there is no other
// way of serializing properties. In this case, this would fail at runtime.
// CURIOUS_ABOUT writeToParcel, createFromParcel, <clinit>, describeContents // CURIOUS_ABOUT writeToParcel, createFromParcel, <clinit>, describeContents
// WITH_RUNTIME // WITH_RUNTIME
@@ -10,4 +7,4 @@ import android.os.Parcelable
class Value(val x: Int) class Value(val x: Int)
@Parcelize @Parcelize
class Test(val value: Value) : Parcelable class Test(val value: @RawValue Value) : Parcelable
@@ -10,7 +10,7 @@ public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creato
public java.lang.Object[] newArray(int size) public java.lang.Object[] newArray(int size)
} }
public final class Test : java/lang/Object { public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR public final static android.os.Parcelable$Creator CREATOR
private final java.util.List names private final java.util.List names
@@ -2,6 +2,7 @@
// WITH_RUNTIME // WITH_RUNTIME
import kotlinx.android.parcel.* import kotlinx.android.parcel.*
import android.os.Parcelable
@Parcelize @Parcelize
class Test(val names: List<String>) class Test(val names: List<String>) : Parcelable
@@ -10,7 +10,7 @@ public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creato
public java.lang.Object[] newArray(int p0) public java.lang.Object[] newArray(int p0)
} }
public final class Test : java/lang/Object { public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR public final static android.os.Parcelable$Creator CREATOR
private final java.util.List names private final java.util.List names