// TARGET_BACKEND: JVM // FILE: 1.kt // WITH_REFLECT package test class B interface A { fun aTest(p: T): B } open class Test { inline fun test(crossinline z: () -> Int) = object : A { override fun aTest(p: T): B { z() return B() } } fun callInline() = test { 1 } } // FILE: 2.kt // NO_CHECK_LAMBDA_INLINING // FULL_JDK import test.* import java.util.* fun box(): String { val result = Test().callInline() val method = result.javaClass.getMethod("aTest", Any::class.java) val genericReturnType = method.genericReturnType if (genericReturnType.toString() != "test.B") return "fail 1: ${genericReturnType}" val genericParameterTypes = method.genericParameterTypes if (genericParameterTypes.size != 1) return "fail 2: ${genericParameterTypes.size}" if (genericParameterTypes[0].toString() != "T") return "fail 3: ${genericParameterTypes[0]}" return "OK" }