JVM KT-47851 fix redundant checkcast elimination
This commit is contained in:
committed by
teamcityserver
parent
8b066fd345
commit
e525e25518
@@ -0,0 +1,21 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// FIR status: result.getMethod OK in FE1.0, unresolved in FIR
|
||||
|
||||
class C(val value: String) {
|
||||
fun getField() = value
|
||||
fun getMethod() {}
|
||||
}
|
||||
|
||||
fun foo(): Any {
|
||||
var result: Any = ""
|
||||
result = C("OK")
|
||||
try {
|
||||
result = result.getField()
|
||||
} catch (e: Exception) {
|
||||
result.getMethod()
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
fun box() = foo().toString()
|
||||
@@ -0,0 +1,30 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// FIR status: result.getMethod OK in FE1.0, unresolved in FIR
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
|
||||
val defaultStringConverter = fun(s: String): Any {
|
||||
var result: Any = s
|
||||
var m: Array<String>? = arrayOf("1", "2", "3", "4")
|
||||
if (m != null) {
|
||||
val fname = m[4]
|
||||
try {
|
||||
result = Class.forName(m[1])
|
||||
if (fname != "") {
|
||||
try {
|
||||
val f = result.getField(fname)
|
||||
result = f.get(null)
|
||||
} catch (nfe: NoSuchFieldException) {
|
||||
val meth = result.getMethod(fname)
|
||||
}
|
||||
}
|
||||
} catch (cnfe: ClassNotFoundException) {
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// Just check that there's no VerifyError.
|
||||
// Semantics is checked in kt47851.kt.
|
||||
fun box() = "OK"
|
||||
Reference in New Issue
Block a user