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
@@ -0,0 +1,8 @@
fun test(a: Any?) = a!! as String
// 1 checkNotNull
// JVM_IR_TEMPLATES
// 0 IFNULL
// 0 IFNONNULL
// 0 NullPointerException
// 0 ASTORE
@@ -26,9 +26,4 @@ fun test3() {
fun getB(): B = B()
// JVM_TEMPLATES
// 1 IFNONNULL
// There should be no null checks in the bytecode.
// JVM_IR_TEMPLATES
// 0 IFNONNULL