Use properties of Java annotations in codegen tests

Retain obsolete versions until support for methods in Java annotations is dropped
This commit is contained in:
Denis Zharkov
2015-04-21 12:00:18 +03:00
parent 6ca7d2aad7
commit 29bf24b7d3
29 changed files with 326 additions and 21 deletions

View File

@@ -0,0 +1,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface JavaAnn {
Class<?>[] args();
}

View File

@@ -0,0 +1,11 @@
class O
class K
JavaAnn(args = array(O::class, K::class)) class MyClass
fun box(): String {
val args = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>()).args()
val argName1 = args[0].simpleName ?: "fail 1"
val argName2 = args[1].simpleName ?: "fail 2"
return argName1 + argName2
}

View File

@@ -0,0 +1,13 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface JavaAnn {
Class<?>[] args();
}
class O {}
class K {}
@JavaAnn(args = {O.class, K.class})
class MyJavaClass {}

View File

@@ -0,0 +1,6 @@
fun box(): String {
val args = javaClass<MyJavaClass>().getAnnotation(javaClass<JavaAnn>()).args()
val argName1 = args[0].simpleName ?: "fail 1"
val argName2 = args[1].simpleName ?: "fail 2"
return argName1 + argName2
}

View File

@@ -0,0 +1,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface JavaAnn {
Class<?> value();
}

View File

@@ -0,0 +1,10 @@
class OK
JavaAnn(OK::class) class MyClass
fun box(): String {
val ann = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>())
if (ann == null) return "fail: cannot find JavaAnn on MyClass"
return ann.value().simpleName!!
}

View File

@@ -0,0 +1,12 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface JavaAnn {
Class<?> value();
}
class OK {}
@JavaAnn(OK.class)
class MyJavaClass {}

View File

@@ -0,0 +1,6 @@
fun box(): String {
val ann = javaClass<MyJavaClass>().getAnnotation(javaClass<JavaAnn>())
if (ann == null) return "fail: cannot find JavaAnn on MyClass"
return ann.value().simpleName!!
}

View File

@@ -0,0 +1,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface JavaAnn {
Class<?>[] value();
}

View File

@@ -0,0 +1,11 @@
class O
class K
JavaAnn(O::class, K::class) class MyClass
fun box(): String {
val args = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>()).value()
val argName1 = args[0].simpleName ?: "fail 1"
val argName2 = args[1].simpleName ?: "fail 2"
return argName1 + argName2
}

View File

@@ -0,0 +1,13 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface JavaAnn {
Class<?>[] value();
}
class O {}
class K {}
@JavaAnn({O.class, K.class})
class MyJavaClass {}

View File

@@ -0,0 +1,9 @@
class O
class K
fun box(): String {
val args = javaClass<MyJavaClass>().getAnnotation(javaClass<JavaAnn>()).value()
val argName1 = args[0].simpleName ?: "fail 1"
val argName2 = args[1].simpleName ?: "fail 2"
return argName1 + argName2
}