Deprecations: data class should now have at least one primary constructor parameter, parameters should be val / var and not vararg.

This commit is contained in:
Mikhail Glukhikh
2015-09-22 13:25:37 +03:00
parent 3d6253c27f
commit 55c7df8b8d
29 changed files with 75 additions and 180 deletions
@@ -1,5 +1,4 @@
@Target(AnnotationTarget.CLASS)
annotation class base
@base data class My
@base data class My(val x: Int)
@@ -1,8 +1,10 @@
package
@base() @kotlin.data() public final class My {
public constructor My()
public final /*synthesized*/ fun copy(): My
public constructor My(/*0*/ x: kotlin.Int)
public final val x: kotlin.Int
public final /*synthesized*/ fun component1(): kotlin.Int
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ...): My
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -1,6 +0,0 @@
data class A(<!UNUSED_PARAMETER!>x<!>: Int, <!UNUSED_PARAMETER!>y<!>: String)
fun foo(a: A) {
a.<!UNRESOLVED_REFERENCE!>component1<!>()
a.<!UNRESOLVED_REFERENCE!>component2<!>()
}
@@ -1,11 +0,0 @@
package
public fun foo(/*0*/ a: A): kotlin.Unit
@kotlin.data() public final class A {
public constructor A(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String)
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String): A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,3 @@
data class My(val x: Int, <!DATA_CLASS_VARARG_PARAMETER!>vararg val y: String<!>)
data class Your(<!DATA_CLASS_VARARG_PARAMETER, DATA_CLASS_NOT_PROPERTY_PARAMETER!>vararg <!UNUSED_PARAMETER!>z<!>: String<!>)
@@ -0,0 +1,21 @@
package
@kotlin.data() public final class My {
public constructor My(/*0*/ x: kotlin.Int, /*1*/ vararg y: kotlin.String /*kotlin.Array<out kotlin.String>*/)
public final val x: kotlin.Int
public final val y: kotlin.Array<out kotlin.String>
public final /*synthesized*/ fun component1(): kotlin.Int
public final /*synthesized*/ fun component2(): kotlin.Array<out kotlin.String>
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ..., /*1*/ vararg y: kotlin.String /*kotlin.Array<out kotlin.String>*/ = ...): My
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.data() public final class Your {
public constructor Your(/*0*/ vararg z: kotlin.String /*kotlin.Array<out kotlin.String>*/)
public final /*synthesized*/ fun copy(/*0*/ vararg z: kotlin.String /*kotlin.Array<out kotlin.String>*/): Your
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -6,6 +6,6 @@ open class NotAllowed
class Derived: Base(42)
<!DATA_CLASS_OVERRIDE_CONFLICT!>data<!> class Nasty(x: Int, val y: Int): <!DATA_CLASS_CANNOT_HAVE_CLASS_SUPERTYPES!>Base<!>(x)
<!DATA_CLASS_OVERRIDE_CONFLICT!>data<!> class Nasty(val z: Int, val y: Int): <!DATA_CLASS_CANNOT_HAVE_CLASS_SUPERTYPES!>Base<!>(z)
data class Complex(val y: Int): Allowed, <!DATA_CLASS_CANNOT_HAVE_CLASS_SUPERTYPES!>NotAllowed<!>()
@@ -37,12 +37,14 @@ public final class Derived : Base {
}
@kotlin.data() public final class Nasty : Base {
public constructor Nasty(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int)
public constructor Nasty(/*0*/ z: kotlin.Int, /*1*/ y: kotlin.Int)
public final override /*1*/ /*fake_override*/ val x: kotlin.Int
public final val y: kotlin.Int
public final val z: kotlin.Int
public final override /*1*/ /*synthesized*/ fun component1(): kotlin.Int
public final /*synthesized*/ fun component2(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun copy(/*0*/ x: kotlin.Int = ...): Base
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int = ...): Nasty
public final /*synthesized*/ fun copy(/*0*/ z: kotlin.Int = ..., /*1*/ y: kotlin.Int = ...): Nasty
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -1,4 +1,4 @@
data class A()
data class <!DATA_CLASS_WITHOUT_PARAMETERS!>A<!>()
fun foo(a: A) {
a.<!UNRESOLVED_REFERENCE!>component1<!>()
@@ -1,8 +0,0 @@
// !CHECK_TYPE
data class A(val x: Int, <!UNUSED_PARAMETER!>y<!>: String)
fun foo(a: A) {
checkSubtype<Int>(a.component1())
a.<!UNRESOLVED_REFERENCE!>component2<!>()
}
@@ -1,13 +0,0 @@
package
public fun foo(/*0*/ a: A): kotlin.Unit
@kotlin.data() public final class A {
public constructor A(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String)
public final val x: kotlin.Int
public final /*synthesized*/ fun component1(): kotlin.Int
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ..., /*1*/ y: kotlin.String): A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,8 +0,0 @@
// !CHECK_TYPE
data class A(var x: Int, <!UNUSED_PARAMETER!>y<!>: String)
fun foo(a: A) {
checkSubtype<Int>(a.component1())
a.<!UNRESOLVED_REFERENCE!>component2<!>()
}
@@ -1,13 +0,0 @@
package
public fun foo(/*0*/ a: A): kotlin.Unit
@kotlin.data() public final class A {
public constructor A(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String)
public final var x: kotlin.Int
public final /*synthesized*/ fun component1(): kotlin.Int
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ..., /*1*/ y: kotlin.String): A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,4 +1,4 @@
data class A
data class <!DATA_CLASS_WITHOUT_PARAMETERS!>A<!>
fun foo(a: A) {
a.<!UNRESOLVED_REFERENCE!>component1<!>()
@@ -1,10 +0,0 @@
data class A(foo: String, val bar: Int, other: Long) {
val foo = foo
val other = other
}
fun test(a: A) {
a.component1()
a.<!UNRESOLVED_REFERENCE!>component2<!>()
a.<!UNRESOLVED_REFERENCE!>component3<!>()
}
@@ -1,15 +0,0 @@
package
public fun test(/*0*/ a: A): kotlin.Unit
@kotlin.data() public final class A {
public constructor A(/*0*/ foo: kotlin.String, /*1*/ bar: kotlin.Int, /*2*/ other: kotlin.Long)
public final val bar: kotlin.Int
public final val foo: kotlin.String
public final val other: kotlin.Long
public final /*synthesized*/ fun component1(): kotlin.Int
public final /*synthesized*/ fun copy(/*0*/ foo: kotlin.String, /*1*/ bar: kotlin.Int = ..., /*2*/ other: kotlin.Long): A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,8 +0,0 @@
// !CHECK_TYPE
data class A(<!UNUSED_PARAMETER!>x<!>: Int, val y: String)
fun foo(a: A) {
checkSubtype<String>(a.component1())
a.<!UNRESOLVED_REFERENCE!>component2<!>()
}
@@ -1,13 +0,0 @@
package
public fun foo(/*0*/ a: A): kotlin.Unit
@kotlin.data() public final class A {
public constructor A(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String)
public final val y: kotlin.String
public final /*synthesized*/ fun component1(): kotlin.String
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...): A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,8 +0,0 @@
// !CHECK_TYPE
data class A(<!UNUSED_PARAMETER!>x<!>: Int, var y: String)
fun foo(a: A) {
checkSubtype<String>(a.component1())
a.<!UNRESOLVED_REFERENCE!>component2<!>()
}
@@ -1,13 +0,0 @@
package
public fun foo(/*0*/ a: A): kotlin.Unit
@kotlin.data() public final class A {
public constructor A(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String)
public final var y: kotlin.String
public final /*synthesized*/ fun component1(): kotlin.String
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...): A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,3 +1,3 @@
data <!WRONG_MODIFIER_TARGET!>annotation<!> enum class E {
<!WRONG_MODIFIER_TARGET!>annotation<!> enum class E {
D
}
@@ -1,12 +1,11 @@
package
@kotlin.data() @kotlin.annotation.annotation() public final enum class E : kotlin.Enum<E> {
@kotlin.annotation.annotation() public final enum class E : kotlin.Enum<E> {
enum entry D
private constructor E()
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: E): kotlin.Int
public final /*synthesized*/ fun copy(): E
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
@@ -3,10 +3,10 @@ data class A1(val x: String) {
constructor(): this("")
}
data class A2() {
constructor(x: String): this()
data class A2(val y: String, val z: Int) {
constructor(x: String): this(x, 0)
}
data class <!PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS!>A3<!> {
data class <!PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS, DATA_CLASS_WITHOUT_PARAMETERS!>A3<!> {
constructor()
}
@@ -12,9 +12,13 @@ package
}
@kotlin.data() public final class A2 {
public constructor A2()
public constructor A2(/*0*/ x: kotlin.String)
public final /*synthesized*/ fun copy(): A2
public constructor A2(/*0*/ y: kotlin.String, /*1*/ z: kotlin.Int)
public final val y: kotlin.String
public final val z: kotlin.Int
public final /*synthesized*/ fun component1(): kotlin.String
public final /*synthesized*/ fun component2(): kotlin.Int
public final /*synthesized*/ fun copy(/*0*/ y: kotlin.String = ..., /*1*/ z: kotlin.Int = ...): A2
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String