// WITH_REFLECT // TARGET_BACKEND: JVM // FILE: 1.kt package test open class TypeRef { val type = target() private fun target(): String { val thisClass = this.javaClass val superClass = thisClass.genericSuperclass return superClass.toString() } } inline fun typeWithMessage(message: String = "Hello"): String { val type = object : TypeRef() {} val target = type.type return message + " " + target } // FILE: 2.kt import test.* fun specifyOptionalArgument() = typeWithMessage>("Hello") fun useDefault() = typeWithMessage>() fun box(): String { val specifyOptionalArgument = specifyOptionalArgument() val useDefault = useDefault() if (useDefault != specifyOptionalArgument) return "fail: $useDefault != $specifyOptionalArgument" val type = typeWithMessage>("") if (type != " test.TypeRef>") return "fail 2: $type" return "OK" }