Test for obsolete KT-6988: java.lang.VerifyError: Bad return caused by inline reified
#KT-6988 Obsolete
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
import test.*
|
||||
|
||||
public class A()
|
||||
|
||||
fun box(): String {
|
||||
val s = "yo".inlineMeIfYouCan<A>()().call()
|
||||
if (s !is A) return "fail"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package test
|
||||
|
||||
interface Call<T> {
|
||||
fun call(): T
|
||||
}
|
||||
|
||||
public inline fun <reified T: Any> Any.inlineMeIfYouCan() : () -> Call<T> = {
|
||||
object : Call<T> {
|
||||
override fun call() = T::class.java.newInstance()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
"yo".inlineMeIfYouCan<StringBuilder>()().run()
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package test
|
||||
|
||||
|
||||
public inline fun <reified T: Any> Any.inlineMeIfYouCan() : () -> Runnable = {
|
||||
object : Runnable {
|
||||
override fun run() {
|
||||
javaClass<T>().newInstance()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user