// JVM_TARGET: 1.8 // WITH_RUNTIME // FILE: 1.kt package test open class Base(val name: String) class A(name: String) : Base(name) class B(name: String) : Base(name) var result = "fail" fun foo(base: Array) { result = base[0].name } fun cond() = true inline fun process(a: Base) { val z = try { arrayOf(a as T) } catch (e: Exception) { arrayOf(a as Y) } foo(z) } // FILE: 2.kt import test.* fun box(): String { process(B("OK")) return result }