Allow fake overrides and delegates to be impl for header declarations

Also fix a bug with matching supertype lists of header/impl classes
This commit is contained in:
Alexander Udalov
2016-12-13 20:57:25 +03:00
parent 7deaf8cc41
commit 546e47dc44
6 changed files with 115 additions and 2 deletions
@@ -0,0 +1,19 @@
// !LANGUAGE: +MultiPlatformProjects
// MODULE: m1-common
// FILE: common.kt
header open class Foo {
open fun bar(): String
}
// MODULE: m2-jvm(m1-common)
// FILE: jvm.kt
interface Bar {
fun bar(): String
}
val bar: Bar
get() = null!!
impl open class Foo : Bar by bar
@@ -0,0 +1,31 @@
// -- Module: <m1-common> --
package
public open header class Foo {
public constructor Foo()
public open header fun bar(): 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 val bar: Bar
public interface Bar {
public abstract fun bar(): 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
}
public open impl class Foo : Bar {
public constructor Foo()
public open override /*1*/ /*delegation*/ fun bar(): 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
}
@@ -0,0 +1,16 @@
// !LANGUAGE: +MultiPlatformProjects
// MODULE: m1-common
// FILE: common.kt
header class Foo {
fun bar(): String
}
// MODULE: m2-jvm(m1-common)
// FILE: jvm.kt
open class Bar {
fun bar() = "bar"
}
impl class Foo : Bar()
@@ -0,0 +1,30 @@
// -- Module: <m1-common> --
package
public final header class Foo {
public constructor Foo()
public final header fun bar(): 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 open class Bar {
public constructor Bar()
public final fun bar(): 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
}
public final impl class Foo : Bar {
public constructor Foo()
public final override /*1*/ /*fake_override*/ fun bar(): 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
}