Implement kotlin.jvm.overloads annotation for generating all overloads of a method that has default parameter values.
#KT-2095 Fixed
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
class C {
|
||||
companion object {
|
||||
[kotlin.platform.platformStatic] [kotlin.jvm.overloads] public fun foo(o: String, k: String = "K"): String {
|
||||
return o + k
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val m = javaClass<C>().getMethod("foo", javaClass<String>())
|
||||
return m.invoke(null, "O") as String
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
class C {
|
||||
[kotlin.jvm.overloads] public fun foo(d1: Double, d2: Double, status: String = "OK"): String {
|
||||
return if (d1 + d2 == 3.0) status else "fail"
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val c = C()
|
||||
val m = c.javaClass.getMethod("foo", javaClass<Double>(), javaClass<Double>())
|
||||
return m.invoke(c, 1.0, 2.0) as String
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
class C {
|
||||
}
|
||||
|
||||
[kotlin.jvm.overloads] fun C.foo(o: String, k: String = "K"): String {
|
||||
return o + k
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val m = javaClass<C>().getClassLoader().loadClass("_DefaultPackage").getMethod("foo", javaClass<C>(), javaClass<String>())
|
||||
return m.invoke(null, C(), "O") as String
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
class C {
|
||||
[kotlin.jvm.overloads] public fun foo(o: String = "O", k: String = "K"): String {
|
||||
return o + k
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val c = C()
|
||||
val m = c.javaClass.getMethod("foo")
|
||||
return m.invoke(c) as String
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
class C {
|
||||
[kotlin.jvm.overloads] public fun foo(o: String, k: String = "K"): String {
|
||||
return o + k
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val c = C()
|
||||
val m = c.javaClass.getMethod("foo", javaClass<String>())
|
||||
return m.invoke(c, "O") as String
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
class C {
|
||||
[kotlin.jvm.overloads] public fun foo(s: String = "OK"): String {
|
||||
return s
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val c = C()
|
||||
val m = c.javaClass.getMethod("foo")
|
||||
return m.invoke(c) as String
|
||||
}
|
||||
Reference in New Issue
Block a user