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

This commit is contained in:
Yan Zhulanow
2020-07-07 19:35:26 +09:00
parent b7796d63d8
commit 15b2850ee0
85 changed files with 2473 additions and 2 deletions
@@ -0,0 +1,13 @@
// "Add empty primary constructor" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
class <caret>Test : Parcelable {
constructor(s: String)
constructor(s: String, i: Int) : this(s)
}
@@ -0,0 +1,13 @@
// "Add empty primary constructor" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
class <caret>Test() : Parcelable {
constructor(s: String) : this()
constructor(s: String, i: Int) : this(s)
}
@@ -0,0 +1,11 @@
// "Add empty primary constructor" "false"
// IGNORE_IRRELEVANT_ACTIONS
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
class <caret>Test() : Parcelable
@@ -0,0 +1,12 @@
// "Add empty primary constructor" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
class <caret>Test : Parcelable {
constructor(a: Int)
}
@@ -0,0 +1,12 @@
// "Add empty primary constructor" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
class <caret>Test() : Parcelable {
constructor(a: Int) : this()
}
@@ -0,0 +1,12 @@
// "Remove 'inner' modifier" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
class Foo {
@Parcelize
<caret>inner class Bar : Parcelable
}
@@ -0,0 +1,12 @@
// "Remove 'inner' modifier" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
class Foo {
@Parcelize<caret>
class Bar : Parcelable
}
@@ -0,0 +1,15 @@
// "Annotate containing class with ''@Parcelize''" "true"
// ERROR: No 'Parcelable' supertype
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.*
object StringParceler : Parceler<String> {
override fun create(parcel: Parcel) = TODO()
override fun String.write(parcel: Parcel, flags: Int) = TODO()
}
class Foo(@<caret>TypeParceler<String, StringParceler> val a: String)
@@ -0,0 +1,16 @@
// "Annotate containing class with ''@Parcelize''" "true"
// ERROR: No 'Parcelable' supertype
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.*
object StringParceler : Parceler<String> {
override fun create(parcel: Parcel) = TODO()
override fun String.write(parcel: Parcel, flags: Int) = TODO()
}
@Parcelize
class Foo(@<caret>TypeParceler<String, StringParceler> val a: String)
@@ -0,0 +1,36 @@
// "Remove custom ''CREATOR'' property" "true"
// ERROR: Overriding 'writeToParcel' is not allowed. Use 'Parceler' companion object instead
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val a: String) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString()) {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(a)
}
override fun describeContents(): Int {
return 0
}
companion object {
@JvmField
val <caret>CREATOR = object : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
}
@@ -0,0 +1,26 @@
// "Remove custom ''CREATOR'' property" "true"
// ERROR: Overriding 'writeToParcel' is not allowed. Use 'Parceler' companion object instead
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val a: String) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString()) {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(a)
}
override fun describeContents(): Int {
return 0
}
companion object {
<caret>}
}
@@ -0,0 +1,33 @@
// "Remove custom ''writeToParcel()'' function" "true"
// ERROR: 'CREATOR' definition is not allowed. Use 'Parceler' companion object instead
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val a: String) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString()) {
}
<caret>override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(a)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,29 @@
// "Remove custom ''writeToParcel()'' function" "true"
// ERROR: 'CREATOR' definition is not allowed. Use 'Parceler' companion object instead
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val a: String) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString()) {
}
<caret>override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,34 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readInt()) {
}
<caret>override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,28 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parceler
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readInt()) {
}
<caret>companion object : Parceler<Foo> {
override fun Foo.write(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
override fun create(parcel: Parcel): Foo {
return Foo(parcel)
}
}
}
@@ -0,0 +1,32 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString(), parcel.readInt())
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
companion object {
@JvmField
val <caret>CREATOR: Parcelable.Creator<Foo> = object : Creator() {}
}
private abstract class Creator : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,32 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parceler
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString(), parcel.readInt())
companion object : Parceler<Foo> {
<caret>override fun Foo.write(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
override fun create(parcel: Parcel): Foo = TODO()
}
private abstract class Creator : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,34 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readInt()) {
}
<caret>override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
override fun describeContents(): Int {
return 50
}
companion object CREATOR : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,32 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parceler
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readInt()) {
}
<caret>override fun describeContents(): Int {
return 50
}
companion object : Parceler<Foo> {
override fun Foo.write(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
override fun create(parcel: Parcel): Foo {
return Foo(parcel)
}
}
}
@@ -0,0 +1,30 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readInt()) {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
companion object <caret>CREATOR : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,28 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parceler
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readInt()) {
}
companion object <caret>: Parceler<Foo> {
override fun Foo.write(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
override fun create(parcel: Parcel): Foo {
return Foo(parcel)
}
}
}
@@ -0,0 +1,32 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString(), parcel.readInt())
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
companion object {
@JvmField
val <caret>CREATOR: Parcelable.Creator<Foo> = Creator()
}
private class Creator : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,34 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parceler
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString(), parcel.readInt())
companion object : Parceler<Foo> {
<caret>override fun Foo.write(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
override fun create(parcel: Parcel): Foo {
return Foo(parcel)
}
}
private class Creator : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,30 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString(), parcel.readInt())
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
companion object {
@JvmField
val <caret>CREATOR = object : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
}
@@ -0,0 +1,24 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parceler
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString(), parcel.readInt())
companion object : Parceler<Foo> {
<caret>override fun Foo.write(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
override fun create(parcel: Parcel): Foo {
return Foo(parcel)
}
}
}
@@ -0,0 +1,30 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readInt()) {
}
<caret>override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
companion object CREATOR : Parcelable.Creator<Foo> {
override fun createFromParcel(parcel: Parcel): Foo {
return Foo(parcel)
}
override fun newArray(size: Int): Array<Foo?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,28 @@
// "Migrate to ''Parceler'' companion object" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.Parceler
import kotlinx.parcelize.Parcelize
@Parcelize
class Foo(val firstName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readInt()) {
}
<caret>companion object : Parceler<Foo> {
override fun Foo.write(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeInt(age)
}
override fun create(parcel: Parcel): Foo {
return Foo(parcel)
}
}
}
@@ -0,0 +1,13 @@
// "Add ''Parcelable'' supertype" "false"
// IGNORE_IRRELEVANT_ACTIONS
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
abstract class AbstractParcelable : Parcelable
@Parcelize
class <caret>Test(val s: String) : AbstractParcelable()
@@ -0,0 +1,10 @@
// "Add ''Parcelable'' supertype" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
class <caret>Test(val s: String)
@@ -0,0 +1,10 @@
// "Add ''Parcelable'' supertype" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
class <caret>Test(val s: String) : Parcelable
@@ -0,0 +1,12 @@
// "Add ''@IgnoredOnParcel'' annotation" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
class Test : Parcelable {
val <caret>a = 5
}
@@ -0,0 +1,14 @@
// "Add ''@IgnoredOnParcel'' annotation" "true"
// WITH_RUNTIME
package com.myapp.activity
import android.os.Parcelable
import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize
@Parcelize
class Test : Parcelable {
@IgnoredOnParcel
val <caret>a = 5
}
@@ -0,0 +1,17 @@
// "Remove redundant ''@TypeParceler'' annotation" "true"
// WARNING: This annotation duplicates the one for Class 'Foo'
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.*
object StringParceler : Parceler<String> {
override fun create(parcel: Parcel) = TODO()
override fun String.write(parcel: Parcel, flags: Int) = TODO()
}
@Parcelize
@TypeParceler<String, StringParceler>
class Foo(@<caret>TypeParceler<String, StringParceler> val a: String) : Parcelable
@@ -0,0 +1,17 @@
// "Remove redundant ''@TypeParceler'' annotation" "true"
// WARNING: This annotation duplicates the one for Class 'Foo'
// WITH_RUNTIME
package com.myapp.activity
import android.os.*
import kotlinx.parcelize.*
object StringParceler : Parceler<String> {
override fun create(parcel: Parcel) = TODO()
override fun String.write(parcel: Parcel, flags: Int) = TODO()
}
@Parcelize
@TypeParceler<String, StringParceler>
class Foo(<caret>val a: String) : Parcelable