Files
kotlin/compiler/testData/codegen/boxWithStdlib/annotations/varargInAnnotationParameter.kt
Mikhail Glukhikh 609d696202 Annotations have now retention of "RUNTIME" by default. Java retention is generated as given by kotlin annotation. Annotation rendering changed.
Annotation arguments with default values are rendered as ... if renderDefaultAnnotationArguments is true.
Tests: java retention does not taken into account by Descriptor comparator.
Java retentinon changed to kotlin retention in some tests + one new test with java retention added.
More accurate tests for intentions in byte code (visibility controlled).
2015-07-14 16:25:01 +03:00

47 lines
1.1 KiB
Kotlin
Vendored

annotation(retention = AnnotationRetention.RUNTIME) class Ann(vararg val p: Int)
Ann() class MyClass1
Ann(1) class MyClass2
Ann(1, 2) class MyClass3
Ann(*intArray()) class MyClass4
Ann(*intArray(1)) class MyClass5
Ann(*intArray(1, 2)) class MyClass6
Ann(p = 1) class MyClass7
Ann(p = *intArray()) class MyClass8
Ann(p = *intArray(1)) class MyClass9
Ann(p = *intArray(1, 2)) class MyClass10
fun box(): String {
test(javaClass<MyClass1>(), "")
test(javaClass<MyClass2>(), "1")
test(javaClass<MyClass3>(), "12")
test(javaClass<MyClass4>(), "")
test(javaClass<MyClass5>(), "1")
test(javaClass<MyClass6>(), "12")
test(javaClass<MyClass7>(), "1")
test(javaClass<MyClass8>(), "")
test(javaClass<MyClass9>(), "1")
test(javaClass<MyClass10>(), "12")
return "OK"
}
fun test(klass: Class<*>, expected: String) {
val ann = klass.getAnnotation(javaClass<Ann>())
if (ann == null) throw AssertionError("fail: cannot find Ann on ${klass}")
var result = ""
for (i in ann.p) {
result += i
}
if (result != expected) {
throw AssertionError("fail: expected = ${expected}, actual = ${result}")
}
}