Relax rules about inferring to Nothing for special calls

#KT-37388 Fixed
 #KT-38427 Fixed
 #KT-39953 Fixed
 #KT-38899 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2020-07-15 10:59:10 +03:00
parent e45cd02b01
commit 100a6f70ca
55 changed files with 424 additions and 264 deletions
@@ -0,0 +1,24 @@
// WITH_REFLECT
// TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
fun <T : A> create(modelClass: Class<T>): T {
return if (modelClass.isAssignableFrom(B::class.java)) {
createViewModel()
} else {
throw Exception()
}
}
@Suppress("UNCHECKED_CAST")
fun <T : A> createViewModel(): T {
return B() as T
}
open class A
class B : A()
fun box(): String {
val r = create(A::class.java)
return if (r is B) "OK" else "fail"
}