Fix KCallable#callBy to JvmStatic companion object members
#KT-12915 Fixed
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class C {
|
||||
companion object {
|
||||
fun foo(a: String, b: String = "b") = a + b
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val f = C.Companion::class.members.single { it.name == "foo" }
|
||||
|
||||
// Any object method currently requires the object instance passed
|
||||
try {
|
||||
f.callBy(mapOf(
|
||||
f.parameters.single { it.name == "a" } to "a"
|
||||
))
|
||||
return "Fail: IllegalArgumentException should have been thrown"
|
||||
}
|
||||
catch (e: IllegalArgumentException) {
|
||||
// OK
|
||||
}
|
||||
|
||||
assertEquals("ab", f.callBy(mapOf(
|
||||
f.parameters.first() to C,
|
||||
f.parameters.single { it.name == "a" } to "a"
|
||||
)))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
// WITH_REFLECT
|
||||
|
||||
// KT-12915 IAE on callBy of JvmStatic function with default arguments
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class C {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun foo(a: String, b: String = "b") = a + b
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val f = C.Companion::class.members.single { it.name == "foo" }
|
||||
|
||||
// Any object method currently requires the object instance passed
|
||||
try {
|
||||
f.callBy(mapOf(
|
||||
f.parameters.single { it.name == "a" } to "a"
|
||||
))
|
||||
return "Fail: IllegalArgumentException should have been thrown"
|
||||
}
|
||||
catch (e: IllegalArgumentException) {
|
||||
// OK
|
||||
}
|
||||
|
||||
assertEquals("ab", f.callBy(mapOf(
|
||||
f.parameters.first() to C,
|
||||
f.parameters.single { it.name == "a" } to "a"
|
||||
)))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user