4ad6cfcf53
We can't rely on argument type nullability here, because it still can hold an uninitialized value on JVM. KT-50577 KT-35272 KT-27427
27 lines
386 B
Kotlin
Vendored
27 lines
386 B
Kotlin
Vendored
abstract class A {
|
|
abstract val x: Any
|
|
|
|
init {
|
|
castX(this)
|
|
}
|
|
}
|
|
|
|
class B : A() {
|
|
override val x: Any = "abc"
|
|
}
|
|
|
|
fun castX(a: A) {
|
|
a.x as String
|
|
}
|
|
|
|
fun box(): String {
|
|
try {
|
|
B()
|
|
} catch (e: NullPointerException) {
|
|
return "OK"
|
|
} catch (e: ClassCastException) {
|
|
return "OK" // JS
|
|
}
|
|
return "Failed: should throw NPE"
|
|
}
|