New default checks for mixed hierarchies

Old and new schemes
This commit is contained in:
Mikhail Bogdanov
2020-07-16 12:15:06 +02:00
parent de02b31ad7
commit 125c72cb8d
15 changed files with 283 additions and 38 deletions
@@ -0,0 +1,26 @@
// FULL_JDK
// FILE: 1.kt
// !JVM_DEFAULT_MODE: disable
interface Check {
fun test(): String {
return "fail";
}
}
interface SubCheck : Check {
override fun test(): String {
return "OK"
}
}
open class CheckClass : Check
// FILE: main.kt
// !JVM_DEFAULT_MODE: all
// JVM_TARGET: 1.8
class SubCheckClass : CheckClass(), SubCheck
fun box(): String {
return SubCheckClass().test()
}
@@ -0,0 +1,21 @@
// WITH_RUNTIME
// JVM_TARGET: 1.8
// FILE: 1.kt
// !JVM_DEFAULT_MODE: disable
interface Foo<T> {
fun test(p: T) = p
val T.prop: String
get() = "K"
}
interface FooDerived: Foo<String>
// FILE: main.kt
// !JVM_DEFAULT_MODE: all-compatibility
open class UnspecializedFromDerived : FooDerived
fun box(): String {
val foo = UnspecializedFromDerived()
return foo.test("O") + with(foo) { "K".prop }
}