mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 00:21:47 +00:00
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
31 lines
737 B
Kotlin
Vendored
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"
|
|
}
|