Additional tests on reflection calls
This commit is contained in:
+11
@@ -0,0 +1,11 @@
|
||||
public class J {
|
||||
private final String result;
|
||||
|
||||
private J(String result) {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
private String getResult() {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import kotlin.reflect.*
|
||||
import kotlin.reflect.jvm.*
|
||||
import kotlin.test.*
|
||||
|
||||
fun box(): String {
|
||||
val c = J::class.constructors.single()
|
||||
assertFalse(c.isAccessible)
|
||||
failsWith(javaClass<IllegalCallableAccessException>()) { c.call("") }
|
||||
|
||||
c.isAccessible = true
|
||||
assertTrue(c.isAccessible)
|
||||
val j = c.call("OK")
|
||||
|
||||
val m = J::class.members.single { it.name == "getResult" }
|
||||
assertFalse(m.isAccessible)
|
||||
failsWith(javaClass<IllegalCallableAccessException>()) { m.call(j)!! }
|
||||
|
||||
m.isAccessible = true
|
||||
return m.call(j) as String
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
open class A {
|
||||
fun foo() = "OK"
|
||||
}
|
||||
|
||||
class B : A()
|
||||
|
||||
fun box(): String {
|
||||
val foo = B::class.members.single { it.name == "foo" }
|
||||
return foo.call(B()) as String
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
open class A<T>(val t: T) {
|
||||
fun foo() = t
|
||||
}
|
||||
|
||||
class B(s: String) : A<String>(s)
|
||||
|
||||
fun box(): String {
|
||||
val foo = B::class.members.single { it.name == "foo" }
|
||||
return foo.call(B("OK")) as String
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fun box(): String {
|
||||
class Local {
|
||||
fun result(s: String) = s
|
||||
}
|
||||
|
||||
return Local::result.call(Local(), "OK")
|
||||
}
|
||||
Reference in New Issue
Block a user