JVM: Support using KClass as annotation parameter type

This commit is contained in:
Denis Zharkov
2015-04-07 17:27:15 +03:00
parent 82674e56b9
commit cc17f7d82d
19 changed files with 248 additions and 10 deletions

View File

@@ -0,0 +1,6 @@
class O {}
class K {}
@Ann(args={O.class, K.class})
class Test {
}

View File

@@ -0,0 +1,13 @@
import kotlin.reflect.KClass
import java.lang.annotation.*
Retention(RetentionPolicy.RUNTIME)
annotation
class Ann(val args: Array<KClass<*>>)
fun box(): String {
val args = javaClass<Test>().getAnnotation(javaClass<Ann>()).args
val argName1 = args[0].simpleName ?: "fail 1"
val argName2 = args[1].simpleName ?: "fail 2"
return argName1 + argName2
}

View File

@@ -0,0 +1,5 @@
class OK {}
@Ann(arg=OK.class)
class Test {
}

View File

@@ -0,0 +1,11 @@
import kotlin.reflect.KClass
import java.lang.annotation.*
Retention(RetentionPolicy.RUNTIME)
annotation
class Ann(val arg: KClass<*>)
fun box(): String {
val argName = javaClass<Test>().getAnnotation(javaClass<Ann>()).arg.simpleName ?: "fail 1"
return argName
}

View File

@@ -0,0 +1,6 @@
class O {}
class K {}
@Ann(args={O.class, K.class})
class Test {
}

View File

@@ -0,0 +1,13 @@
import kotlin.reflect.KClass
import java.lang.annotation.*
Retention(RetentionPolicy.RUNTIME)
annotation
class Ann(vararg val args: KClass<*>)
fun box(): String {
val args = javaClass<Test>().getAnnotation(javaClass<Ann>()).args
val argName1 = args[0].simpleName ?: "fail 1"
val argName2 = args[1].simpleName ?: "fail 2"
return argName1 + argName2
}