Add intentions Add/Remove/Redo parcelable implementation

#KT-17465 Fixed
#KT-12049 Fixed
This commit is contained in:
Vyacheslav Gerasimov
2017-04-18 18:53:51 +03:00
parent 37c3d8f204
commit 5b58a6f9e8
71 changed files with 2583 additions and 2 deletions
@@ -0,0 +1,86 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
import android.os.Bundle
import android.os.IBinder
import android.os.Parcel
import android.os.Parcelable
import android.util.SparseBooleanArray
import android.util.SparseIntArray
open class BaseParcelable(parcel: Parcel) : Parcelable {
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<BaseParcelable> {
override fun createFromParcel(parcel: Parcel): BaseParcelable {
return BaseParcelable(parcel)
}
override fun newArray(size: Int): Array<BaseParcelable?> {
return arrayOfNulls(size)
}
}
}
class <caret>MyData {
val delegated by lazy { 0 }
val readonlyField = true
var listOfStrings: List<String?>? = null
var listOfIBinder: List<IBinder?>? = null
var arrayfield1: IntArray? = null
var arrayfield2: Array<String>? = null
var arrayfield3: LongArray? = null
var arrayfield4: ByteArray? = null
var arrayfield5: CharArray? = null
var arrayfield6: ShortArray? = null // No method for Short
var arrayfield7: FloatArray? = null
var arrayfield8: DoubleArray? = null
var arrayfield9: BooleanArray? = null
var arrayfield10: Array<CharSequence>? = null // No method for CharSequence
var arrayfield11: Array<IBinder>? = null
var field1: Int? = 0
var field2: String? = ""
var field3: Long? = 0
var field4: Byte? = 0
var field5: Char? = '\u0000'
var field6: Short? = 0
var field7: Float? = 0.0f
var field8: Double? = 0.0
var field9: Boolean? = false
var field10: CharSequence? = ""
var field11: SparseBooleanArray? = null
var field12: SparseIntArray? = null // read/write methods will be available starting from android O
var field13: Bundle? = null
var field14: IBinder? = null
var goodArray: Array<BaseParcelable?>? = emptyArray()
var badArray: Array<Parcelable?>? = emptyArray()
var goodList: List<BaseParcelable?>? = emptyList()
var badList: List<Parcelable?>? = emptyList()
var parcelableProperty: BaseParcelable?
val uninitializedVal: Int?
val fieldWIthGetter: Int?
get() {
return 0
}
var fieldWithCustomGetterAndSetter: Int? = 0
get() {
return field
}
set(value: Int?) {
field = value
}
}
@@ -0,0 +1,160 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
import android.os.Bundle
import android.os.IBinder
import android.os.Parcel
import android.os.Parcelable
import android.util.SparseBooleanArray
import android.util.SparseIntArray
open class BaseParcelable(parcel: Parcel) : Parcelable {
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<BaseParcelable> {
override fun createFromParcel(parcel: Parcel): BaseParcelable {
return BaseParcelable(parcel)
}
override fun newArray(size: Int): Array<BaseParcelable?> {
return arrayOfNulls(size)
}
}
}
class MyData() : Parcelable {
val delegated by lazy { 0 }
val readonlyField = true
var listOfStrings: List<String?>? = null
var listOfIBinder: List<IBinder?>? = null
var arrayfield1: IntArray? = null
var arrayfield2: Array<String>? = null
var arrayfield3: LongArray? = null
var arrayfield4: ByteArray? = null
var arrayfield5: CharArray? = null
var arrayfield6: ShortArray? = null // No method for Short
var arrayfield7: FloatArray? = null
var arrayfield8: DoubleArray? = null
var arrayfield9: BooleanArray? = null
var arrayfield10: Array<CharSequence>? = null // No method for CharSequence
var arrayfield11: Array<IBinder>? = null
var field1: Int? = 0
var field2: String? = ""
var field3: Long? = 0
var field4: Byte? = 0
var field5: Char? = '\u0000'
var field6: Short? = 0
var field7: Float? = 0.0f
var field8: Double? = 0.0
var field9: Boolean? = false
var field10: CharSequence? = ""
var field11: SparseBooleanArray? = null
var field12: SparseIntArray? = null // read/write methods will be available starting from android O
var field13: Bundle? = null
var field14: IBinder? = null
var goodArray: Array<BaseParcelable?>? = emptyArray()
var badArray: Array<Parcelable?>? = emptyArray()
var goodList: List<BaseParcelable?>? = emptyList()
var badList: List<Parcelable?>? = emptyList()
var parcelableProperty: BaseParcelable?
val uninitializedVal: Int?
val fieldWIthGetter: Int?
get() {
return 0
}
var fieldWithCustomGetterAndSetter: Int? = 0
get() {
return field
}
set(value: Int?) {
field = value
}
constructor(parcel: Parcel) : this() {
listOfStrings = parcel.createStringArrayList()
listOfIBinder = parcel.createBinderArrayList()
arrayfield1 = parcel.createIntArray()
arrayfield2 = parcel.createStringArray()
arrayfield3 = parcel.createLongArray()
arrayfield4 = parcel.createByteArray()
arrayfield5 = parcel.createCharArray()
arrayfield7 = parcel.createFloatArray()
arrayfield8 = parcel.createDoubleArray()
arrayfield9 = parcel.createBooleanArray()
arrayfield11 = parcel.createBinderArray()
field1 = parcel.readValue(Int::class.java.classLoader) as? Int
field2 = parcel.readString()
field3 = parcel.readValue(Long::class.java.classLoader) as? Long
field4 = parcel.readValue(Byte::class.java.classLoader) as? Byte
field5 = parcel.readValue(Char::class.java.classLoader) as? Char
field6 = parcel.readValue(Short::class.java.classLoader) as? Short
field7 = parcel.readValue(Float::class.java.classLoader) as? Float
field8 = parcel.readValue(Double::class.java.classLoader) as? Double
field9 = parcel.readValue(Boolean::class.java.classLoader) as? Boolean
field10 = parcel.readString()
field11 = parcel.readSparseBooleanArray()
field13 = parcel.readBundle(Bundle::class.java.classLoader)
field14 = parcel.readStrongBinder()
goodArray = parcel.createTypedArray(BaseParcelable)
goodList = parcel.createTypedArrayList(BaseParcelable)
parcelableProperty = parcel.readParcelable(BaseParcelable::class.java.classLoader)
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeStringList(listOfStrings)
parcel.writeBinderList(listOfIBinder)
parcel.writeIntArray(arrayfield1)
parcel.writeStringArray(arrayfield2)
parcel.writeLongArray(arrayfield3)
parcel.writeByteArray(arrayfield4)
parcel.writeCharArray(arrayfield5)
parcel.writeFloatArray(arrayfield7)
parcel.writeDoubleArray(arrayfield8)
parcel.writeBooleanArray(arrayfield9)
parcel.writeBinderArray(arrayfield11)
parcel.writeValue(field1)
parcel.writeString(field2)
parcel.writeValue(field3)
parcel.writeValue(field4)
parcel.writeValue(field5)
parcel.writeValue(field6)
parcel.writeValue(field7)
parcel.writeValue(field8)
parcel.writeValue(field9)
parcel.writeString(field10?.toString())
parcel.writeSparseBooleanArray(field11)
parcel.writeBundle(field13)
parcel.writeStrongBinder(field14)
parcel.writeTypedArray(goodArray, flags)
parcel.writeTypedList(goodList)
parcel.writeParcelable(parcelableProperty, flags)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<MyData> {
override fun createFromParcel(parcel: Parcel): MyData {
return MyData(parcel)
}
override fun newArray(size: Int): Array<MyData?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,74 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
import android.os.Parcel
import android.os.Parcelable
open class BaseParcelable(parcel: Parcel) : Parcelable {
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<BaseParcelable> {
override fun createFromParcel(parcel: Parcel): BaseParcelable {
return BaseParcelable(parcel)
}
override fun newArray(size: Int): Array<BaseParcelable?> {
return arrayOfNulls(size)
}
}
}
class <caret>MyData {
val delegated by lazy { 0 }
val readonlyField = true
var field1: Int = 0
var field2: String = ""
var field3: Long = 0
var field4: Byte = 0
var field5: Char = '\u0000'
var field6: Short = 0
var field7: Float = 0.0f
var field8: Double = 0.0
var field9: Boolean = false
var field10: CharSequence = ""
var arrayfield1: IntArray
var arrayfield2: Array<String>
var arrayfield3: LongArray
var arrayfield4: ByteArray
var arrayfield5: CharArray
var arrayfield6: ShortArray // No method for Short
var arrayfield7: FloatArray
var arrayfield8: DoubleArray
var arrayfield9: BooleanArray
var arrayfield10: Array<CharSequence> // No method for CharSequence
var goodArray: Array<BaseParcelable> = emptyArray()
var badArray: Array<Parcelable> = emptyArray()
var goodList: List<BaseParcelable> = emptyList()
var badList: List<Parcelable> = emptyList()
var parcelableProperty: BaseParcelable
val uninitializedVal: Int
val fieldWIthGetter: Int
get() {
return 0
}
var fieldWithCustomGetterAndSetter: Int = 0
get() {
return field
}
set(value: Int) {
field = value
}
}
@@ -0,0 +1,136 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
import android.os.Parcel
import android.os.Parcelable
open class BaseParcelable(parcel: Parcel) : Parcelable {
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<BaseParcelable> {
override fun createFromParcel(parcel: Parcel): BaseParcelable {
return BaseParcelable(parcel)
}
override fun newArray(size: Int): Array<BaseParcelable?> {
return arrayOfNulls(size)
}
}
}
class MyData() : Parcelable {
val delegated by lazy { 0 }
val readonlyField = true
var field1: Int = 0
var field2: String = ""
var field3: Long = 0
var field4: Byte = 0
var field5: Char = '\u0000'
var field6: Short = 0
var field7: Float = 0.0f
var field8: Double = 0.0
var field9: Boolean = false
var field10: CharSequence = ""
var arrayfield1: IntArray
var arrayfield2: Array<String>
var arrayfield3: LongArray
var arrayfield4: ByteArray
var arrayfield5: CharArray
var arrayfield6: ShortArray // No method for Short
var arrayfield7: FloatArray
var arrayfield8: DoubleArray
var arrayfield9: BooleanArray
var arrayfield10: Array<CharSequence> // No method for CharSequence
var goodArray: Array<BaseParcelable> = emptyArray()
var badArray: Array<Parcelable> = emptyArray()
var goodList: List<BaseParcelable> = emptyList()
var badList: List<Parcelable> = emptyList()
var parcelableProperty: BaseParcelable
val uninitializedVal: Int
val fieldWIthGetter: Int
get() {
return 0
}
var fieldWithCustomGetterAndSetter: Int = 0
get() {
return field
}
set(value: Int) {
field = value
}
constructor(parcel: Parcel) : this() {
field1 = parcel.readInt()
field2 = parcel.readString()
field3 = parcel.readLong()
field4 = parcel.readByte()
field5 = parcel.readInt().toChar()
field6 = parcel.readInt().toShort()
field7 = parcel.readFloat()
field8 = parcel.readDouble()
field9 = parcel.readByte() != 0.toByte()
field10 = parcel.readString()
arrayfield1 = parcel.createIntArray()
arrayfield2 = parcel.createStringArray()
arrayfield3 = parcel.createLongArray()
arrayfield4 = parcel.createByteArray()
arrayfield5 = parcel.createCharArray()
arrayfield7 = parcel.createFloatArray()
arrayfield8 = parcel.createDoubleArray()
arrayfield9 = parcel.createBooleanArray()
goodArray = parcel.createTypedArray(BaseParcelable)
goodList = parcel.createTypedArrayList(BaseParcelable)
parcelableProperty = parcel.readParcelable(BaseParcelable::class.java.classLoader)
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeInt(field1)
parcel.writeString(field2)
parcel.writeLong(field3)
parcel.writeByte(field4)
parcel.writeInt(field5.toInt())
parcel.writeInt(field6.toInt())
parcel.writeFloat(field7)
parcel.writeDouble(field8)
parcel.writeByte(if (field9) 1 else 0)
parcel.writeString(field10.toString())
parcel.writeIntArray(arrayfield1)
parcel.writeStringArray(arrayfield2)
parcel.writeLongArray(arrayfield3)
parcel.writeByteArray(arrayfield4)
parcel.writeCharArray(arrayfield5)
parcel.writeFloatArray(arrayfield7)
parcel.writeDoubleArray(arrayfield8)
parcel.writeBooleanArray(arrayfield9)
parcel.writeTypedArray(goodArray, flags)
parcel.writeTypedList(goodList)
parcel.writeParcelable(parcelableProperty, flags)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<MyData> {
override fun createFromParcel(parcel: Parcel): MyData {
return MyData(parcel)
}
override fun newArray(size: Int): Array<MyData?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,25 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
// NOT_AVAILABLE
import android.os.Parcel
import android.os.Parcelable
class <caret>Simple(parcel: Parcel) : Parcelable {
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Simple> {
override fun createFromParcel(parcel: Parcel): Simple {
return Simple(parcel)
}
override fun newArray(size: Int): Array<Simple?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,5 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
class <caret>MyData(val number: Int, val text: String, val flag: Boolean) {
var count = 0
}
@@ -0,0 +1,36 @@
import android.os.Parcel
import android.os.Parcelable
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
class MyData(val number: Int, val text: String, val flag: Boolean) : Parcelable {
var count = 0
constructor(parcel: Parcel) : this(
parcel.readInt(),
parcel.readString(),
parcel.readByte() != 0.toByte()) {
count = parcel.readInt()
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeInt(number)
parcel.writeString(text)
parcel.writeByte(if (flag) 1 else 0)
parcel.writeInt(count)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<MyData> {
override fun createFromParcel(parcel: Parcel): MyData {
return MyData(parcel)
}
override fun newArray(size: Int): Array<MyData?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,3 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
class <caret>MyData(val number: Int, val text: String, flag: Boolean)
@@ -0,0 +1,31 @@
import android.os.Parcel
import android.os.Parcelable
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
class MyData(val number: Int, val text: String, flag: Boolean) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readInt(),
parcel.readString(),
TODO("flag")) {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeInt(number)
parcel.writeString(text)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<MyData> {
override fun createFromParcel(parcel: Parcel): MyData {
return MyData(parcel)
}
override fun newArray(size: Int): Array<MyData?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,23 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
import android.os.Parcel
import android.os.Parcelable
class <caret>Simple : Parcelable {
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Simple> {
override fun createFromParcel(parcel: Parcel): Simple {
return Simple(parcel)
}
override fun newArray(size: Int): Array<Simple?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,26 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
import android.os.Parcel
import android.os.Parcelable
class Simple() : Parcelable {
constructor(parcel: Parcel) : this() {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Simple> {
override fun createFromParcel(parcel: Parcel): Simple {
return Simple(parcel)
}
override fun newArray(size: Int): Array<Simple?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,20 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
import android.os.Parcel
import android.os.Parcelable
class <caret>Simple(parcel: Parcel) : Parcelable {
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
companion object CREATOR : Parcelable.Creator<Simple> {
override fun createFromParcel(parcel: Parcel): Simple {
return Simple(parcel)
}
override fun newArray(size: Int): Array<Simple?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,24 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
import android.os.Parcel
import android.os.Parcelable
class Simple(parcel: Parcel) : Parcelable {
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
companion object CREATOR : Parcelable.Creator<Simple> {
override fun createFromParcel(parcel: Parcel): Simple {
return Simple(parcel)
}
override fun newArray(size: Int): Array<Simple?> {
return arrayOfNulls(size)
}
}
override fun describeContents(): Int {
return 0
}
}
@@ -0,0 +1,19 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
import android.os.Parcel
import android.os.Parcelable
class <caret>Simple(parcel: Parcel) : Parcelable {
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Simple> {
override fun createFromParcel(parcel: Parcel): Simple {
return Simple(parcel)
}
override fun newArray(size: Int): Array<Simple?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,23 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
import android.os.Parcel
import android.os.Parcelable
class Simple(parcel: Parcel) : Parcelable {
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Simple> {
override fun createFromParcel(parcel: Parcel): Simple {
return Simple(parcel)
}
override fun newArray(size: Int): Array<Simple?> {
return arrayOfNulls(size)
}
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
}
@@ -0,0 +1,3 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
class <caret>Simple
@@ -0,0 +1,27 @@
import android.os.Parcel
import android.os.Parcelable
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
class Simple() : Parcelable {
constructor(parcel: Parcel) : this() {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Simple> {
override fun createFromParcel(parcel: Parcel): Simple {
return Simple(parcel)
}
override fun newArray(size: Int): Array<Simple?> {
return arrayOfNulls(size)
}
}
}
@@ -0,0 +1,7 @@
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
// WITH_RUNTIME
class <caret>WithTransient() {
@Transient var transientText: String = ""
var text: String = ""
}
@@ -0,0 +1,32 @@
import android.os.Parcel
import android.os.Parcelable
// INTENTION_CLASS: org.jetbrains.kotlin.android.intention.ImplementParcelableAction
// WITH_RUNTIME
class WithTransient() : Parcelable {
@Transient var transientText: String = ""
var text: String = ""
constructor(parcel: Parcel) : this() {
text = parcel.readString()
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(text)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<WithTransient> {
override fun createFromParcel(parcel: Parcel): WithTransient {
return WithTransient(parcel)
}
override fun newArray(size: Int): Array<WithTransient?> {
return arrayOfNulls(size)
}
}
}