Annotation parameter must be constant

This commit is contained in:
Natalia Ukhorskaya
2013-12-12 19:20:03 +04:00
parent 7a9d822070
commit 31ad4f8451
8 changed files with 100 additions and 1 deletions
@@ -0,0 +1,14 @@
annotation class AnnC(val c: Class<*>)
AnnC(<!ANNOTATION_PARAMETER_MUST_BE_CLASS_LITERAL!>c<!>)
class Test
AnnC(javaClass<A>())
class Test2
val c: Class<*> = javaClass<A>()
class A
// from stdlib
fun <T> javaClass() : Class<T> = null <!CAST_NEVER_SUCCEEDS!>as<!> Class<T>
@@ -0,0 +1,36 @@
annotation class Ann(val i: Int)
annotation class AnnIA(val ia: IntArray)
annotation class AnnSA(val sa: Array<String>)
Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>MyClass().i<!>)
Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>O.i<!>)
Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>)
Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i2<!>)
AnnIA(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>ia<!>)
AnnSA(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>sa<!>)
class Test {
val i = 1
Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>) val i2 = 1
}
var i = 1
val i2 = foo()
fun foo(): Int = 1
class MyClass {
val i = 1
}
object O {
val i = 1
}
val ia: IntArray = intArray(1, 2)
val sa: Array<String> = array("a", "b")
annotation class Ann2
// from stdlib
fun <T> array(vararg t : T) : Array<T> = t
fun intArray(vararg content : Int) : IntArray = content
@@ -0,0 +1,13 @@
annotation class AnnE(val i: MyEnum)
AnnE(<!ANNOTATION_PARAMETER_MUST_BE_ENUM_CONST!>e<!>)
class Test
val e: MyEnum = MyEnum.A
enum class MyEnum {
A
}
AnnE(<!TYPE_MISMATCH!>Test()<!>)
class Test2