// TARGET_BACKEND: JVM // WITH_RUNTIME package test import kotlin.test.assertEquals open class A inline fun foo(): Array> { val x = object { inline fun bar(): A<*,*,*> = object : A() {} fun f1() = bar() fun f2() = bar() fun f3() = bar() fun f4() = bar() } return arrayOf(x.f1(), x.f2(), x.f3(), x.f4()) } fun box(): String { val result = foo() val expected = arrayOf( Triple("java.lang.Double", "java.lang.Integer", "java.lang.Integer"), Triple("java.lang.Integer", "java.lang.Double", "java.lang.Integer"), Triple("java.lang.Boolean", "java.lang.Double", "java.lang.Integer"), Triple("java.lang.Double", "java.lang.Boolean", "java.lang.Integer") ).map { "test.A<${it.first}, ${it.second}, ${it.third}>" } for (i in expected.indices) { assertEquals(expected[i], result[i].javaClass.getGenericSuperclass()?.toString(), "$i-th element") } return "OK" }