Write additional type parameters for DefaultImpls methods, fix for KT-11121: BadClassFile exception for interface implemented generic properties

#KT-11121 Fixed
This commit is contained in:
Michael Bogdanov
2016-02-29 14:39:49 +03:00
parent 5aca50b4ca
commit 534a3a11d6
10 changed files with 240 additions and 29 deletions
@@ -0,0 +1,23 @@
class B<M>
interface A<T, Y : B<T>> {
fun <T, L> p(p: T): T {
return p
}
val <T> T.z : T?
get() = null
}
fun box(): String {
val defaultImpls = Class.forName("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()}"
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()}"
return "OK"
}