Drop Cloneable in JS, synthesize it at compile-time on JVM

Use the same approach that is used for creating function type classes
(Function{0,1,...}) + add Cloneable to supertypes of Array and primitive arrays

 #KT-5537 Fixed
This commit is contained in:
Alexander Udalov
2016-10-13 11:53:18 +03:00
parent 0f4b10d37d
commit 035d6156a7
24 changed files with 376 additions and 173 deletions
+9 -22
View File
@@ -21,11 +21,10 @@ public open class Any {
/*primary*/ public constructor Any()
}
public final class Array</*0*/ T> : kotlin.Cloneable {
public final class Array</*0*/ T> {
public constructor Array</*0*/ T>(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> T)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.Array<T>
public final operator fun get(/*0*/ index: kotlin.Int): T
public final operator fun iterator(): kotlin.collections.Iterator<T>
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: T): kotlin.Unit
@@ -40,12 +39,11 @@ public final class Boolean : kotlin.Comparable<kotlin.Boolean> {
public final infix fun xor(/*0*/ other: kotlin.Boolean): kotlin.Boolean
}
public final class BooleanArray : kotlin.Cloneable {
public final class BooleanArray {
/*primary*/ public constructor BooleanArray(/*0*/ size: kotlin.Int)
public constructor BooleanArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Boolean)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.BooleanArray
public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Boolean
public final operator fun iterator(): kotlin.collections.BooleanIterator
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Boolean): kotlin.Unit
@@ -114,12 +112,11 @@ public final class Byte : kotlin.Number, kotlin.Comparable<kotlin.Byte> {
}
}
public final class ByteArray : kotlin.Cloneable {
public final class ByteArray {
/*primary*/ public constructor ByteArray(/*0*/ size: kotlin.Int)
public constructor ByteArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Byte)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.ByteArray
public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Byte
public final operator fun iterator(): kotlin.collections.ByteIterator
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Byte): kotlin.Unit
@@ -159,12 +156,11 @@ public final class Char : kotlin.Comparable<kotlin.Char> {
}
}
public final class CharArray : kotlin.Cloneable {
public final class CharArray {
/*primary*/ public constructor CharArray(/*0*/ size: kotlin.Int)
public constructor CharArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Char)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.CharArray
public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Char
public final operator fun iterator(): kotlin.collections.CharIterator
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Char): kotlin.Unit
@@ -177,10 +173,6 @@ public interface CharSequence {
public abstract fun subSequence(/*0*/ startIndex: kotlin.Int, /*1*/ endIndex: kotlin.Int): kotlin.CharSequence
}
public interface Cloneable {
protected open fun clone(): kotlin.Any
}
public interface Comparable</*0*/ in T> {
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
}
@@ -280,12 +272,11 @@ public final class Double : kotlin.Number, kotlin.Comparable<kotlin.Double> {
}
}
public final class DoubleArray : kotlin.Cloneable {
public final class DoubleArray {
/*primary*/ public constructor DoubleArray(/*0*/ size: kotlin.Int)
public constructor DoubleArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Double)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.DoubleArray
public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Double
public final operator fun iterator(): kotlin.collections.DoubleIterator
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Double): kotlin.Unit
@@ -374,12 +365,11 @@ public final class Float : kotlin.Number, kotlin.Comparable<kotlin.Float> {
}
}
public final class FloatArray : kotlin.Cloneable {
public final class FloatArray {
/*primary*/ public constructor FloatArray(/*0*/ size: kotlin.Int)
public constructor FloatArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Float)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.FloatArray
public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Float
public final operator fun iterator(): kotlin.collections.FloatIterator
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Float): kotlin.Unit
@@ -458,12 +448,11 @@ public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int> {
}
}
public final class IntArray : kotlin.Cloneable {
public final class IntArray {
/*primary*/ public constructor IntArray(/*0*/ size: kotlin.Int)
public constructor IntArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Int)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.IntArray
public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Int
public final operator fun iterator(): kotlin.collections.IntIterator
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Int): kotlin.Unit
@@ -539,12 +528,11 @@ public final class Long : kotlin.Number, kotlin.Comparable<kotlin.Long> {
}
}
public final class LongArray : kotlin.Cloneable {
public final class LongArray {
/*primary*/ public constructor LongArray(/*0*/ size: kotlin.Int)
public constructor LongArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Long)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.LongArray
public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Long
public final operator fun iterator(): kotlin.collections.LongIterator
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Long): kotlin.Unit
@@ -642,12 +630,11 @@ public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short> {
}
}
public final class ShortArray : kotlin.Cloneable {
public final class ShortArray {
/*primary*/ public constructor ShortArray(/*0*/ size: kotlin.Int)
public constructor ShortArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Short)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.ShortArray
public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Short
public final operator fun iterator(): kotlin.collections.ShortIterator
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Short): kotlin.Unit