Files
kotlin/compiler/testData/codegen/box/inlineClasses/functionNameMangling/reflectionForLocalClassInFunctionWithMangledName.kt
Alexander Udalov 38fd2b9ed6 Fix reflection-related codegen tests on JDK 9+
In JDK 9, Class.simpleName changed behavior for local/anonymous Kotlin
classes (see KT-23072), this is why we now check for both variants of
the name in tests. Also, the format of annotation arguments changed a
little, where float parameters no longer have the trailing "f", and
class literals are rendered with ".class" at the end
2019-01-25 10:14:25 +01:00

31 lines
737 B
Kotlin
Vendored

// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// WITH_REFLECT
import kotlin.test.*
inline class S(val string: String)
fun test(s: S) {
class Local
val localKClass = Local::class
val localJClass = localKClass.java
val kName = localKClass.simpleName
// See https://youtrack.jetbrains.com/issue/KT-29413
// assertEquals("Local", kName)
if (kName != "Local" && kName != "test\$Local") throw AssertionError("Fail KClass: $kName")
assertTrue { localJClass.isLocalClass }
val jName = localJClass.simpleName
if (jName != "Local" && jName != "test\$Local") throw AssertionError("Fail java.lang.Class: $jName")
}
fun box(): String {
test(S(""))
return "OK"
}