Fix generic signature for KFunctionN types on JVM

#KT-15473 Fixed
This commit is contained in:
Alexander Udalov
2016-12-29 19:15:47 +03:00
parent bf3b5281a9
commit 0dbb02ec6a
12 changed files with 152 additions and 58 deletions
@@ -0,0 +1,10 @@
package test;
import kotlin.reflect.KFunction;
class Bar extends Foo {
@Override
public KFunction<Request> request() {
return null;
}
}
@@ -0,0 +1,9 @@
// KT-15473 Invalid KFunction byte code signature for callable references
package test
class Request(val id: Long)
open class Foo {
open fun request() = ::Request
}
@@ -0,0 +1,16 @@
package test
public/*package*/ open class Bar : test.Foo {
public/*package*/ constructor Bar()
public open fun request(): kotlin.reflect.KFunction<test.Request!>
}
public open class Foo {
public constructor Foo()
public open fun request(): kotlin.reflect.KFunction1<@kotlin.ParameterName(name = "id") kotlin.Long, test.Request>
}
public final class Request {
public constructor Request(/*0*/ kotlin.Long)
public final val id: kotlin.Long
}
@@ -0,0 +1,11 @@
// KT-15473 Invalid KFunction byte code signature for callable references
class Request(val id: Long)
open class Foo {
open fun request() = ::Request
}
// method: Foo::request
// jvm signature: ()Lkotlin/reflect/KFunction;
// generic signature: ()Lkotlin/reflect/KFunction<LRequest;>;
@@ -10,6 +10,6 @@ fun box(): String {
return test(Foo()::test)
}
// method: CallableFunctionKt$box$1::invoke
// method: FunctionReferenceInvokeKt$box$1::invoke
// jvm signature: ()Ljava/lang/String;
// generic signature: null
@@ -8,6 +8,6 @@ fun box(): String {
return test(Foo("OK")::a)
}
// method: CallablePropertyKt$box$1::get
// method: PropertyReferenceGetKt$box$1::get
// jvm signature: ()Ljava/lang/Object;
// generic signature: null