Aligh test data with JDK 15 reflection output

This commit is contained in:
Mikhael Bogdanov
2021-02-05 14:12:38 +01:00
parent 21e9f67322
commit 3dff225b98
6 changed files with 18 additions and 13 deletions
@@ -32,7 +32,7 @@ fun check(clazz: Class<*>, expected: Boolean = true) {
assertTrue(Modifier.isStatic(method.modifiers)) assertTrue(Modifier.isStatic(method.modifiers))
assertTrue(Modifier.isPublic(method.modifiers)) assertTrue(Modifier.isPublic(method.modifiers))
val str = method.declaredAnnotations.single().toString() val str = method.declaredAnnotations.single().toString()
assertTrue("@test.Anno\\(value=\"?OK\"?\\)".toRegex().matches(str), str) assertTrue("@test.Anno\\((value=)?\"?OK\"?\\)".toRegex().matches(str), str)
return return
} }
} }
@@ -9,14 +9,14 @@ public class A<@Anno(1) T> {}
// FILE: Anno.kt // FILE: Anno.kt
import kotlin.test.assertEquals import kotlin.test.assertTrue
@Target(AnnotationTarget.TYPE_PARAMETER) @Target(AnnotationTarget.TYPE_PARAMETER)
annotation class Anno(val value: Int = 0) annotation class Anno(val value: Int = 0)
fun box(): String { fun box(): String {
val typeParameter = A::class.java.typeParameters.single() val typeParameter = A::class.java.typeParameters.single()
assertEquals("[@Anno(value=1)]", typeParameter.annotations.toList().toString()) val parametertoString = typeParameter.annotations.toList().toString()
assertTrue("\\[@Anno\\((value=)?1\\)\\]".toRegex().matches(parametertoString), parametertoString)
return "OK" return "OK"
} }
@@ -14,17 +14,19 @@ public class A {
// FILE: Anno.kt // FILE: Anno.kt
import java.lang.reflect.AnnotatedParameterizedType import java.lang.reflect.AnnotatedParameterizedType
import kotlin.test.assertEquals import kotlin.test.assertTrue
@Target(AnnotationTarget.TYPE) @Target(AnnotationTarget.TYPE)
annotation class Anno(val value: Int = 0) annotation class Anno(val value: Int = 0)
fun box(): String { fun box(): String {
val method = A::class.java.declaredMethods.single() val method = A::class.java.declaredMethods.single()
assertEquals("[@Anno(value=1)]", method.annotatedReturnType.annotations.toList().toString()) val methodToString = method.annotatedReturnType.annotations.toList().toString()
assertTrue("\\[@Anno\\((value=)?1\\)\\]".toRegex().matches(methodToString), methodToString)
val parameterType = method.parameters.single().annotatedType as AnnotatedParameterizedType val parameterType = method.parameters.single().annotatedType as AnnotatedParameterizedType
assertEquals("[@Anno(value=2)]", parameterType.annotatedActualTypeArguments.single().annotations.toList().toString()) val parameterToString = parameterType.annotatedActualTypeArguments.single().annotations.toList().toString()
assertTrue("\\[@Anno\\((value=)?2\\)\\]".toRegex().matches(parameterToString), parameterToString)
return "OK" return "OK"
} }
@@ -23,7 +23,7 @@ class C {
} }
fun box(): String { fun box(): String {
assertTrue("\\[@Anno\\(value=void(\\.class)?\\)\\]".toRegex().matches(C::f1.annotations.toString())) assertTrue("\\[@Anno\\((value=)?void(\\.class)?\\)\\]".toRegex().matches(C::f1.annotations.toString()))
assertTrue("\\[@Anno\\(value=(class )?java.lang.Void(\\.class)?\\)\\]".toRegex().matches(C::f2.annotations.toString())) assertTrue("\\[@Anno\\((value=)?(class )?java.lang.Void(\\.class)?\\)\\]".toRegex().matches(C::f2.annotations.toString()))
return "OK" return "OK"
} }
@@ -3,11 +3,12 @@
// WITH_REFLECT // WITH_REFLECT
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.test.assertTrue
enum class E { X, Y, Z } enum class E { X, Y, Z }
fun box(): String { fun box(): String {
assertEquals(11, E::class.members.size) assertTrue(E::class.members.size in 11..12, "" + E::class.members.size)
assertEquals("Y", E::name.call(E.Y)) assertEquals("Y", E::name.call(E.Y))
assertEquals(2, E::ordinal.call(E.Z)) assertEquals(2, E::ordinal.call(E.Z))
return "OK" return "OK"
@@ -19,10 +19,12 @@ interface A<T, Y : B<T>> {
fun box(): String { fun box(): String {
val defaultImpls = Class.forName("test.A\$DefaultImpls") val defaultImpls = Class.forName("test.A\$DefaultImpls")
val declaredMethod = defaultImpls.getDeclaredMethod("p", A::class.java, Any::class.java) val declaredMethod = defaultImpls.getDeclaredMethod("p", A::class.java, Any::class.java)
if (declaredMethod.toGenericString() != "public static <T_I1,Y,T,L> T test.A\$DefaultImpls.p(test.A<T_I1, Y>,T)") return "fail 1: ${declaredMethod.toGenericString()}" if (declaredMethod.toGenericString() != "public static <T_I1,Y,T,L> T test.A\$DefaultImpls.p(test.A<T_I1, Y>,T)" &&
declaredMethod.toGenericString() != "public static <T_I1,Y extends test.B<T_I1>,T,L> T test.A\$DefaultImpls.p(test.A<T_I1, Y>,T)") return "fail 1: ${declaredMethod.toGenericString()}"
val declaredProperty = defaultImpls.getDeclaredMethod("getZ", A::class.java, Any::class.java) val declaredProperty = defaultImpls.getDeclaredMethod("getZ", A::class.java, Any::class.java)
if (declaredProperty.toGenericString() != "public static <T_I1,Y,T> T test.A\$DefaultImpls.getZ(test.A<T_I1, Y>,T)") return "fail 2: ${declaredProperty.toGenericString()}" if (declaredProperty.toGenericString() != "public static <T_I1,Y,T> T test.A\$DefaultImpls.getZ(test.A<T_I1, Y>,T)" &&
declaredProperty.toGenericString() != "public static <T_I1,Y extends test.B<T_I1>,T> T test.A\$DefaultImpls.getZ(test.A<T_I1, Y>,T)") return "fail 2: ${declaredProperty.toGenericString()}"
return "OK" return "OK"
} }