Add constructor parameter for compileTimeConstant (can be used in annotation)
This commit is contained in:
+6
@@ -0,0 +1,6 @@
|
||||
annotation class Ann(vararg val i: Boolean)
|
||||
fun foo() {
|
||||
val bool1 = true
|
||||
|
||||
[Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>bool1<!>)] val <!UNUSED_VARIABLE!>a<!> = bool1
|
||||
}
|
||||
+14
@@ -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>
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
annotation class Ann(vararg val i: Boolean)
|
||||
fun foo() {
|
||||
val a1 = 1 > 2
|
||||
val a2 = 1 == 2
|
||||
val a3 = a1 == a2
|
||||
val a4 = a1 > a2
|
||||
|
||||
[Ann(
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a1<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a2<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a3<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a1 > a2<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a1 == a2<!>
|
||||
)] val b = 1
|
||||
}
|
||||
+13
@@ -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
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
// FILE: Test.java
|
||||
public class Test {
|
||||
public static int i1 = 1;
|
||||
public static final int i2 = 1;
|
||||
public static final int i3 = i1;
|
||||
public static final int i4 = i2;
|
||||
public static int i5 = i1;
|
||||
public static int i6 = i2;
|
||||
|
||||
public final int i7 = 1;
|
||||
}
|
||||
|
||||
// FILE: a.kt
|
||||
annotation class Ann(vararg val i: Int)
|
||||
|
||||
Ann(
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i1<!>,
|
||||
Test.i2,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i3<!>,
|
||||
Test.i4,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i5<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i6<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test().i7<!>
|
||||
)
|
||||
class A
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
annotation class Ann(vararg val i: Int)
|
||||
|
||||
Ann(
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i1<!>,
|
||||
i2,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>,
|
||||
i4,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i5<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i6<!>
|
||||
)
|
||||
class Test
|
||||
|
||||
var i1 = 1 // var
|
||||
val i2 = 1 // val
|
||||
val i3 = i1 // val with var in initializer
|
||||
val i4 = i2 // val with val in initializer
|
||||
var i5 = i1 // var with var in initializer
|
||||
var i6 = i2 // var with val in initializer
|
||||
+36
@@ -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
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
annotation class Ann(vararg val i: String)
|
||||
|
||||
val topLevel = "topLevel"
|
||||
|
||||
fun foo() {
|
||||
val a1 = "a"
|
||||
val a2 = "b"
|
||||
val a3 = a1 + a2
|
||||
|
||||
val a4 = 1
|
||||
val a5 = 1.0
|
||||
|
||||
[Ann(
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a1<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a2<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a3<!>,
|
||||
"$topLevel",
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"$a1"<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"$a1 $topLevel"<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"$a4"<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"$a5"<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a1 + a2<!>,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"a" + a2<!>,
|
||||
"a" + topLevel,
|
||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"a" + a4<!>
|
||||
)] val b = 1
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
annotation class Ann(vararg val i: Int)
|
||||
|
||||
Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>)
|
||||
Ann(i2)
|
||||
Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>)
|
||||
Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>)
|
||||
Ann(*intArray(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>))
|
||||
Ann(*intArray(i2))
|
||||
Ann(*intArray(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>))
|
||||
Ann(*intArray(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>))
|
||||
class Test
|
||||
|
||||
var i = 1
|
||||
val i2 = 1
|
||||
val i3 = foo()
|
||||
|
||||
fun foo(): Int = 1
|
||||
|
||||
annotation class AnnJC(vararg val i: Class<*>)
|
||||
AnnJC(*array(javaClass<Test>()))
|
||||
AnnJC(*array(iJC))
|
||||
class TestJC
|
||||
val iJC = javaClass<Test>()
|
||||
|
||||
annotation class AnnAnn(vararg val i: Ann)
|
||||
AnnAnn(*array(Ann(1)))
|
||||
AnnAnn(*array(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>iAnn<!>))
|
||||
class TestAnn
|
||||
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(1)<!>
|
||||
Reference in New Issue
Block a user