FIR: report ANNOTATION_CLASS_CONSTRUCTOR_CALL diagnostic

This commit is contained in:
Mikhail Glukhikh
2021-05-11 16:14:40 +03:00
parent 3663884db2
commit 0d6bc7e7b2
15 changed files with 54 additions and 38 deletions
@@ -13,19 +13,19 @@ annotation class Ann4(val value: String)
@Ann4("a") class MyClass
fun foo() {
Ann()
val a = Ann()
<!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann()<!>
val a = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann()<!>
Ann1(<!NO_VALUE_FOR_PARAMETER!>)<!>
Ann1(1)
bar(Ann())
bar(a = Ann())
<!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann1(1)<!>
bar(<!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann()<!>)
bar(a = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann()<!>)
val ann = javaClass<MyClass>().getAnnotation(javaClass<Ann4>())
ann!!.value()
}
fun bar(a: Ann = Ann()) {
fun bar(a: Ann = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann()<!>) {
if (<!USELESS_IS_CHECK!>a is Ann<!>) {}
}
@@ -7,8 +7,8 @@ val test1a = <!CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS!>AbstractClass()<!>
annotation class AnnotationClass
typealias Test2 = AnnotationClass
val test2 = Test2()
val test2a = AnnotationClass()
val test2 = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Test2()<!>
val test2a = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>AnnotationClass()<!>
enum class EnumClass { VALUE1, VALUE2 }
typealias Test3 = EnumClass
@@ -21,4 +21,4 @@ annotation class AnnAnn(val i: Array<Ann>)
@AnnAnn(arrayOf(Ann(intArrayOf(1))))
@AnnAnn(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>arrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>iAnn<!>)<!>)
class TestAnn
val iAnn = Ann(intArrayOf(1))
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(intArrayOf(1))<!>
@@ -1,27 +0,0 @@
@Retention(AnnotationRetention.SOURCE)
@Repeatable
annotation class Ann(vararg val i: Int)
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>)
@Ann(i2)
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i3<!>)
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i3<!>)
@Ann(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>)<!>)
@Ann(*intArrayOf(i2))
@Ann(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i3<!>)<!>)
@Ann(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i3<!>)<!>)
class Test
var i = 1
const val i2 = 1
val i3 = foo()
fun foo(): Int = 1
@Retention(AnnotationRetention.SOURCE)
@Repeatable
annotation class AnnAnn(vararg val i: Ann)
@AnnAnn(*arrayOf(Ann(1)))
@AnnAnn(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>arrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>iAnn<!>)<!>)
class TestAnn
val iAnn = Ann(1)
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
@Retention(AnnotationRetention.SOURCE)
@Repeatable
annotation class Ann(vararg val i: Int)