blob: 541bb77e3816308876f9ac88f6907161241afe67 [file]
// ISSUE: KT-74999
// IGNORE_KLIB_RUNTIME_ERRORS_WITH_CUSTOM_FIRST_STAGE: 2.0.0 2.1.0
// ^^^ KT-74999 fixed in 2.2.0-Beta2
interface Traversable {
fun foo(): String = "fail"
}
interface Entity<S : Entity<S>> : Traversable {
fun <T : S> isEqualTo(): T
}
interface Path : Traversable
fun <K> select(x: K, y: K): K = x
fun foo(path: Path, e: Entity<*>): String {
return select(e.isEqualTo(), path).foo()
}
class EntityImpl : Entity<EntityImpl>, Path {
override fun <T : EntityImpl> isEqualTo(): T = this as T
override fun foo(): String = "OK"
}
fun box(): String {
return foo(object : Path {}, EntityImpl())
}