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
This commit is contained in:
Alexander Udalov
2019-01-21 19:03:08 +01:00
parent 795f9d83e1
commit 38fd2b9ed6
5 changed files with 24 additions and 14 deletions
@@ -2,6 +2,7 @@
// WITH_REFLECT
import kotlin.test.assertEquals
import kotlin.test.assertTrue
annotation class Anno(@get:JvmName("uglyJvmName") val value: String)
@@ -17,11 +18,11 @@ fun bar() {}
fun box(): String {
val f = Foo::class.annotations.single()
assertEquals("@Anno(uglyJvmName=OK)", f.toString())
assertTrue("@Anno\\(uglyJvmName=\"?OK\"?\\)".toRegex().matches(f.toString()))
assertEquals("OK", (f as Anno).value)
val b = ::bar.annotations.single()
assertEquals("@Meta(anno=@Anno(uglyJvmName=OK))", b.toString())
assertEquals("@Meta(anno=$f)", b.toString())
assertEquals("OK", (b as Meta).anno.value)
return "OK"