// TARGET_BACKEND: JVM // WITH_RUNTIME import kotlin.test.assertEquals inline fun foo(): Array { val x = object { inline fun bar(): Array = arrayOf( T1::class.java.getName(), T::class.java.getName(), R::class.java.getName() ) fun f1() = bar() fun f2() = bar() fun f3() = bar() fun f4() = bar() } val x1 = x.f1() val x2 = x.f2() val x3 = x.f3() val x4 = x.f4() return arrayOf( x1[0], x1[1], x1[2], x2[0], x2[1], x2[2], x3[0], x3[1], x3[2], x4[0], x4[1], x4[2] ) } fun box(): String { val result = foo() val expected = arrayOf( "java.lang.Double", "java.lang.Integer", "java.lang.Integer", "java.lang.Integer", "java.lang.Double", "java.lang.Integer", "java.lang.Boolean", "java.lang.Double", "java.lang.Integer", "java.lang.Double", "java.lang.Boolean", "java.lang.Integer" ) for (i in expected.indices) { assertEquals(expected[i], result[i], "$i-th element") } return "OK" }