Support reflection tests on Android

This commit is contained in:
Mikhael Bogdanov
2019-01-22 17:48:45 +01:00
parent 91980c5293
commit f2a51d3b80
49 changed files with 235 additions and 174 deletions
@@ -3,6 +3,8 @@
// WITH_REFLECT
//test for KT-3722 Write correct generic type information for generated fields
package test
import kotlin.properties.Delegates
class Z<T> {
@@ -50,25 +52,25 @@ fun box(): String {
val classField = clz.getDeclaredField("classField1");
if (classField.getGenericType().toString() != "Z<T>")
if (classField.getGenericType().toString() != "test.Z<T>")
return "fail1: " + classField.getGenericType();
val classField2 = clz.getDeclaredField("classField2");
if (classField2.getGenericType().toString() != "Z<java.lang.String>")
if (classField2.getGenericType().toString() != "test.Z<java.lang.String>")
return "fail2: " + classField2.getGenericType();
val classField3 = clz.getDeclaredField("classField3");
if (classField3.getGenericType().toString() != "Zout<java.lang.String>")
if (classField3.getGenericType().toString() != "test.Zout<java.lang.String>")
return "fail3: " + classField3.getGenericType();
val classField4 = clz.getDeclaredField("classField4");
if (classField4.getGenericType().toString() != "Zin<TParam>")
if (classField4.getGenericType().toString() != "test.Zin<test.TParam>")
return "fail4: " + classField4.getGenericType();
val classField5 = clz.getDeclaredField("delegateLazy\$delegate");
@@ -2,6 +2,8 @@
// WITH_REFLECT
package test
class Z<T> {}
class TParam {}
@@ -30,10 +32,10 @@ fun box(): String {
val params = listOf(
Params(1, Any::class.java, "T", "T"),
Params(2, Z::class.java, "Z<T>", "Z<T>"),
Params(3, Z::class.java, "Z<java.lang.String>", "Z<java.lang.String>"),
Params(4, Any::class.java, "Zout<java.lang.String>", "X"),
Params(5, Any::class.java, "Zin<TParam>", "Y")
Params(2, Z::class.java, "test.Z<T>", "test.Z<T>"),
Params(3, Z::class.java, "test.Z<java.lang.String>", "test.Z<java.lang.String>"),
Params(4, Any::class.java, "test.Zout<java.lang.String>", "X"),
Params(5, Any::class.java, "test.Zin<test.TParam>", "Y")
)
@@ -2,6 +2,7 @@
// TARGET_BACKEND: JVM
// WITH_REFLECT
package test
class B<M>
@@ -17,12 +18,12 @@ interface A<T, Y : B<T>> {
fun box(): String {
val defaultImpls = Class.forName("A\$DefaultImpls")
val defaultImpls = Class.forName("test.A\$DefaultImpls")
val declaredMethod = defaultImpls.getDeclaredMethod("p", A::class.java, Any::class.java)
if (declaredMethod.toGenericString() != "public static <T_I1,Y,T,L> T A\$DefaultImpls.p(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)") return "fail 1: ${declaredMethod.toGenericString()}"
val declaredProperty = defaultImpls.getDeclaredMethod("getZ", A::class.java, Any::class.java)
if (declaredProperty.toGenericString() != "public static <T_I1,Y,T> T A\$DefaultImpls.getZ(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)") return "fail 2: ${declaredProperty.toGenericString()}"
return "OK"
}