[JVM IR] Added null-checks of handler for non-super $default calls
This commit is contained in:
committed by
Alexander Udalov
parent
fe50bb4b93
commit
c1d350f8f3
@@ -1,5 +1,4 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
|
||||
open class O {
|
||||
open fun foo(s: String = throw Error("Fail: this expression should not be evaluated")) {}
|
||||
}
|
||||
|
||||
fun box(): String = try {
|
||||
val f = O::class.java.declaredMethods.single { it.name == "foo\$default" }
|
||||
f(null, O(), "s", 1, "non-null")
|
||||
"Fail: exception should have been thrown"
|
||||
} catch (e: Exception) {
|
||||
val cause = e.cause
|
||||
if (cause is UnsupportedOperationException) {
|
||||
"OK"
|
||||
} else {
|
||||
cause.toString()
|
||||
}
|
||||
}
|
||||
-3
@@ -1,6 +1,3 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// TODO KT-36771 Missing special code for super calls to inline functions support in JVM_IR
|
||||
|
||||
//open modality to method handle check generation
|
||||
open class A {
|
||||
inline fun test(p: String = "OK"): String {
|
||||
|
||||
Reference in New Issue
Block a user