Allow impl class to be data class, allow impl constructor properties

This commit is contained in:
Alexander Udalov
2016-12-13 20:47:45 +03:00
parent 3e97c9fff9
commit 7deaf8cc41
10 changed files with 110 additions and 28 deletions
@@ -0,0 +1,32 @@
// !LANGUAGE: +MultiPlatformProjects
// MODULE: m1-common
// FILE: common.kt
header class Foo(x: Int, y: String) {
val x: Int
val y: String
}
header class Bar(z: Double)
header class Baz(w: List<String>) {
val w: List<String>
operator fun component1(): List<String>
// Disabled because default arguments are not allowed
// fun copy(w: List<T> = ...): Baz<T>
override fun equals(other: Any?): Boolean
override fun hashCode(): Int
override fun toString(): String
}
// MODULE: m2-jvm(m1-common)
// FILE: jvm.kt
impl data class Foo(impl val x: Int, impl val y: String)
impl data class Bar(val z: Double)
impl data class Baz(impl val w: List<String>)
@@ -0,0 +1,63 @@
// -- Module: <m1-common> --
package
public final header class Bar {
public constructor Bar(/*0*/ z: kotlin.Double)
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
}
public final header class Baz {
public constructor Baz(/*0*/ w: kotlin.collections.List<kotlin.String>)
public final val w: kotlin.collections.List<kotlin.String>
public final operator header fun component1(): kotlin.collections.List<kotlin.String>
public open header override /*1*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open header override /*1*/ fun hashCode(): kotlin.Int
public open header override /*1*/ fun toString(): kotlin.String
}
public final header class Foo {
public constructor Foo(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String)
public final val x: kotlin.Int
public final val y: kotlin.String
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
}
// -- Module: <m2-jvm> --
package
public final impl data class Bar {
public constructor Bar(/*0*/ z: kotlin.Double)
public final val z: kotlin.Double
public final operator /*synthesized*/ fun component1(): kotlin.Double
public final /*synthesized*/ fun copy(/*0*/ z: kotlin.Double = ...): Bar
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public final impl data class Baz {
public constructor Baz(/*0*/ w: kotlin.collections.List<kotlin.String>)
public final val w: kotlin.collections.List<kotlin.String>
public final operator /*synthesized*/ fun component1(): kotlin.collections.List<kotlin.String>
public final /*synthesized*/ fun copy(/*0*/ w: kotlin.collections.List<kotlin.String> = ...): Baz
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public final impl data class Foo {
public constructor Foo(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String)
public final val x: kotlin.Int
public final val y: kotlin.String
public final operator /*synthesized*/ fun component1(): kotlin.Int
public final operator /*synthesized*/ fun component2(): kotlin.String
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ..., /*1*/ y: kotlin.String = ...): Foo
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}