JVM_IR fix cast to not-null type

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
This commit is contained in:
Dmitry Petrov
2021-12-29 17:05:58 +03:00
committed by teamcity
parent 4a29a8a7af
commit 4ad6cfcf53
15 changed files with 124 additions and 11 deletions
+26
View File
@@ -0,0 +1,26 @@
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"
}