// TARGET_BACKEND: JVM // WITH_RUNTIME import kotlin.test.assertEquals fun foo(block: () -> String) = block() inline fun className(): String = T::class.java.getName() inline fun lambdaShouldBeReified(): String = foo { className() } interface A { fun f(): String fun g(): String } inline fun AFactory(): A = object : A { override fun f(): String = className() override fun g(): String = foo { className() } } fun box(): String { assertEquals("java.lang.String", lambdaShouldBeReified()) assertEquals("java.lang.Integer", lambdaShouldBeReified()) val x: A = AFactory() assertEquals("java.lang.String", x.f()) assertEquals("java.lang.Integer", x.g()) return "OK" }