Check that arguments of array function call in annotation are constants

#KT-16956 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2017-03-21 17:37:25 +03:00
parent a2ea518b1a
commit 8466270bdb
8 changed files with 93 additions and 21 deletions
@@ -2,11 +2,11 @@
@Repeatable
annotation class Ann(val i: IntArray)
@Ann(intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>))
@Ann(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>)<!>)
@Ann(intArrayOf(i2))
@Ann(intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>))
@Ann(intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>))
@Ann(intArrayOf(<!TYPE_MISMATCH!>intArrayOf(i, i2, i3)<!>))
@Ann(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>)<!>)
@Ann(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>)<!>)
@Ann(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!TYPE_MISMATCH!>intArrayOf(i, i2, i3)<!>)<!>)
class Test
var i = 1
@@ -19,6 +19,6 @@ fun foo(): Int = 1
@Repeatable
annotation class AnnAnn(val i: Array<Ann>)
@AnnAnn(arrayOf(Ann(intArrayOf(1))))
@AnnAnn(arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>iAnn<!>))
@AnnAnn(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>iAnn<!>)<!>)
class TestAnn
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(intArrayOf(1))<!>
@@ -6,10 +6,10 @@ annotation class Ann(vararg val i: Int)
@Ann(i2)
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>)
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>)
@Ann(*intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>))
@Ann(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>)<!>)
@Ann(*intArrayOf(i2))
@Ann(*intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>))
@Ann(*intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>))
@Ann(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>)<!>)
@Ann(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>)<!>)
class Test
var i = 1
@@ -22,6 +22,6 @@ fun foo(): Int = 1
@Repeatable
annotation class AnnAnn(vararg val i: Ann)
@AnnAnn(*arrayOf(Ann(1)))
@AnnAnn(*arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>iAnn<!>))
@AnnAnn(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>iAnn<!>)<!>)
class TestAnn
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(1)<!>