Refactoring: rename parameter to argument for annotation diagnostics
This commit is contained in:
@@ -218,9 +218,9 @@ public interface Errors {
|
|||||||
DiagnosticFactory0<PsiElement> ANNOTATION_CLASS_MEMBER = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<PsiElement> ANNOTATION_CLASS_MEMBER = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<KtTypeReference> INVALID_TYPE_OF_ANNOTATION_MEMBER = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtTypeReference> INVALID_TYPE_OF_ANNOTATION_MEMBER = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<KtTypeReference> NULLABLE_TYPE_OF_ANNOTATION_MEMBER = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtTypeReference> NULLABLE_TYPE_OF_ANNOTATION_MEMBER = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<KtExpression> ANNOTATION_PARAMETER_MUST_BE_CONST = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtExpression> ANNOTATION_ARGUMENT_MUST_BE_CONST = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<KtExpression> ANNOTATION_PARAMETER_MUST_BE_KCLASS_LITERAL = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtExpression> ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<KtExpression> ANNOTATION_PARAMETER_MUST_BE_ENUM_CONST = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtExpression> ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<KtExpression> ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtExpression> ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<KtAnnotatedExpression> ANNOTATIONS_ON_BLOCK_LEVEL_EXPRESSION_ON_THE_SAME_LINE = DiagnosticFactory0.create(WARNING);
|
DiagnosticFactory0<KtAnnotatedExpression> ANNOTATIONS_ON_BLOCK_LEVEL_EXPRESSION_ON_THE_SAME_LINE = DiagnosticFactory0.create(WARNING);
|
||||||
DiagnosticFactory0<KtAnnotationEntry> ANNOTATION_USED_AS_ANNOTATION_ARGUMENT = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtAnnotationEntry> ANNOTATION_USED_AS_ANNOTATION_ARGUMENT = DiagnosticFactory0.create(ERROR);
|
||||||
|
|||||||
+3
-3
@@ -818,9 +818,9 @@ public class DefaultErrorMessages {
|
|||||||
MAP.put(ANNOTATION_CLASS_MEMBER, "Members are not allowed in annotation class");
|
MAP.put(ANNOTATION_CLASS_MEMBER, "Members are not allowed in annotation class");
|
||||||
MAP.put(INVALID_TYPE_OF_ANNOTATION_MEMBER, "Invalid type of annotation member");
|
MAP.put(INVALID_TYPE_OF_ANNOTATION_MEMBER, "Invalid type of annotation member");
|
||||||
MAP.put(NULLABLE_TYPE_OF_ANNOTATION_MEMBER, "An annotation parameter cannot be nullable");
|
MAP.put(NULLABLE_TYPE_OF_ANNOTATION_MEMBER, "An annotation parameter cannot be nullable");
|
||||||
MAP.put(ANNOTATION_PARAMETER_MUST_BE_CONST, "An annotation parameter must be a compile-time constant");
|
MAP.put(ANNOTATION_ARGUMENT_MUST_BE_CONST, "An annotation argument must be a compile-time constant");
|
||||||
MAP.put(ANNOTATION_PARAMETER_MUST_BE_ENUM_CONST, "An enum annotation parameter must be a enum constant");
|
MAP.put(ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST, "An enum annotation argument must be a enum constant");
|
||||||
MAP.put(ANNOTATION_PARAMETER_MUST_BE_KCLASS_LITERAL, "An annotation parameter must be a class literal (T::class)");
|
MAP.put(ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL, "An annotation argument must be a class literal (T::class)");
|
||||||
MAP.put(ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT, "Default value of annotation parameter must be a compile-time constant");
|
MAP.put(ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT, "Default value of annotation parameter must be a compile-time constant");
|
||||||
|
|
||||||
MAP.put(ANNOTATIONS_ON_BLOCK_LEVEL_EXPRESSION_ON_THE_SAME_LINE,
|
MAP.put(ANNOTATIONS_ON_BLOCK_LEVEL_EXPRESSION_ON_THE_SAME_LINE,
|
||||||
|
|||||||
+4
-4
@@ -120,9 +120,9 @@ class ConstantExpressionEvaluator(
|
|||||||
|
|
||||||
val descriptor = expressionType.constructor.declarationDescriptor
|
val descriptor = expressionType.constructor.declarationDescriptor
|
||||||
val diagnosticFactory = when {
|
val diagnosticFactory = when {
|
||||||
DescriptorUtils.isEnumClass(descriptor) -> Errors.ANNOTATION_PARAMETER_MUST_BE_ENUM_CONST
|
DescriptorUtils.isEnumClass(descriptor) -> Errors.ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST
|
||||||
descriptor is ClassDescriptor && KotlinBuiltIns.isKClass(descriptor) -> Errors.ANNOTATION_PARAMETER_MUST_BE_KCLASS_LITERAL
|
descriptor is ClassDescriptor && KotlinBuiltIns.isKClass(descriptor) -> Errors.ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL
|
||||||
else -> Errors.ANNOTATION_PARAMETER_MUST_BE_CONST
|
else -> Errors.ANNOTATION_ARGUMENT_MUST_BE_CONST
|
||||||
}
|
}
|
||||||
|
|
||||||
trace.report(diagnosticFactory.on(argumentExpression))
|
trace.report(diagnosticFactory.on(argumentExpression))
|
||||||
@@ -156,7 +156,7 @@ class ConstantExpressionEvaluator(
|
|||||||
if (lhsExpression != null) {
|
if (lhsExpression != null) {
|
||||||
val doubleColonLhs = trace.bindingContext.get(BindingContext.DOUBLE_COLON_LHS, lhsExpression)
|
val doubleColonLhs = trace.bindingContext.get(BindingContext.DOUBLE_COLON_LHS, lhsExpression)
|
||||||
if (doubleColonLhs is DoubleColonLHS.Expression && !doubleColonLhs.isObjectQualifier) {
|
if (doubleColonLhs is DoubleColonLHS.Expression && !doubleColonLhs.isObjectQualifier) {
|
||||||
trace.report(Errors.ANNOTATION_PARAMETER_MUST_BE_KCLASS_LITERAL.on(argumentExpression))
|
trace.report(Errors.ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL.on(argumentExpression))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
// Functions can be recursively annotated
|
// Functions can be recursively annotated
|
||||||
annotation class ann(val x: Int)
|
annotation class ann(val x: Int)
|
||||||
@ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>bar()<!>) fun foo() = 1
|
@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>bar()<!>) fun foo() = 1
|
||||||
@ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>foo()<!>) fun bar() = 2
|
@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>foo()<!>) fun bar() = 2
|
||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
// Function parameter CAN be recursively annotated
|
// Function parameter CAN be recursively annotated
|
||||||
annotation class ann(val x: Int)
|
annotation class ann(val x: Int)
|
||||||
fun foo(@ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>foo(1)<!>) x: Int): Int = x
|
fun foo(@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>foo(1)<!>) x: Int): Int = x
|
||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
// Functions can be recursively annotated
|
// Functions can be recursively annotated
|
||||||
annotation class ann(val x: Int)
|
annotation class ann(val x: Int)
|
||||||
@ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>foo()<!>) fun foo() = 1
|
@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>foo()<!>) fun foo() = 1
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// Properties can be recursively annotated
|
// Properties can be recursively annotated
|
||||||
annotation class ann(val x: Int)
|
annotation class ann(val x: Int)
|
||||||
class My {
|
class My {
|
||||||
@ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>x<!>) val x: Int = 1
|
@ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>x<!>) val x: Int = 1
|
||||||
}
|
}
|
||||||
compiler/testData/diagnostics/tests/annotations/annotationParameterMustBeConstant/booleanLocalVal.kt
Vendored
+1
-1
@@ -2,5 +2,5 @@ annotation class Ann(vararg val i: Boolean)
|
|||||||
fun foo() {
|
fun foo() {
|
||||||
val bool1 = true
|
val bool1 = true
|
||||||
|
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>bool1<!>) val <!UNUSED_VARIABLE!>a<!> = bool1
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>bool1<!>) val <!UNUSED_VARIABLE!>a<!> = bool1
|
||||||
}
|
}
|
||||||
+5
-5
@@ -7,10 +7,10 @@ fun foo() {
|
|||||||
val a4 = a1 > a2
|
val a4 = a1 > a2
|
||||||
|
|
||||||
@Ann(
|
@Ann(
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a1<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>a1<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a2<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>a2<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a3<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>a3<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a1 > a2<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>a1 > a2<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a1 == a2<!>
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>a1 == a2<!>
|
||||||
) val b = 1
|
) val b = 1
|
||||||
}
|
}
|
||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
annotation class AnnE(val i: MyEnum)
|
annotation class AnnE(val i: MyEnum)
|
||||||
|
|
||||||
@AnnE(<!ANNOTATION_PARAMETER_MUST_BE_ENUM_CONST!>e<!>)
|
@AnnE(<!ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST!>e<!>)
|
||||||
class Test
|
class Test
|
||||||
|
|
||||||
val e: MyEnum = MyEnum.A
|
val e: MyEnum = MyEnum.A
|
||||||
|
|||||||
Vendored
+5
-5
@@ -14,12 +14,12 @@ public class Test {
|
|||||||
annotation class Ann(vararg val i: Int)
|
annotation class Ann(vararg val i: Int)
|
||||||
|
|
||||||
@Ann(
|
@Ann(
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i1<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>Test.i1<!>,
|
||||||
Test.i2,
|
Test.i2,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i3<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>Test.i3<!>,
|
||||||
Test.i4,
|
Test.i4,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i5<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>Test.i5<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test.i6<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>Test.i6<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>Test().i7<!>
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>Test().i7<!>
|
||||||
)
|
)
|
||||||
class A
|
class A
|
||||||
|
|||||||
+4
-4
@@ -1,12 +1,12 @@
|
|||||||
annotation class Ann(vararg val i: Int)
|
annotation class Ann(vararg val i: Int)
|
||||||
|
|
||||||
@Ann(
|
@Ann(
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i1<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i1<!>,
|
||||||
i2,
|
i2,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i3<!>,
|
||||||
i4,
|
i4,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i5<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i5<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i6<!>
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i6<!>
|
||||||
)
|
)
|
||||||
class Test
|
class Test
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -4,15 +4,15 @@ enum class MyEnum {
|
|||||||
A
|
A
|
||||||
}
|
}
|
||||||
|
|
||||||
@AnnE(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"1" + MyEnum.A<!>)
|
@AnnE(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"1" + MyEnum.A<!>)
|
||||||
class Test
|
class Test
|
||||||
|
|
||||||
@AnnE(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"1" + MyEnum::class<!>)
|
@AnnE(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"1" + MyEnum::class<!>)
|
||||||
class Test2
|
class Test2
|
||||||
|
|
||||||
@AnnE(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"1" + AnnE("23")<!>)
|
@AnnE(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"1" + AnnE("23")<!>)
|
||||||
class Test3
|
class Test3
|
||||||
|
|
||||||
@AnnE(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"1" + arrayOf("23", "34")<!>)
|
@AnnE(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"1" + arrayOf("23", "34")<!>)
|
||||||
class Test4
|
class Test4
|
||||||
|
|
||||||
|
|||||||
Vendored
+10
-10
@@ -12,17 +12,17 @@ fun foo() {
|
|||||||
val a5 = 1.0
|
val a5 = 1.0
|
||||||
|
|
||||||
@Ann(
|
@Ann(
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a1<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>a1<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a2<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>a2<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a3<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>a3<!>,
|
||||||
"$topLevel",
|
"$topLevel",
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"$a1"<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"$a1"<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"$a1 $topLevel"<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"$a1 $topLevel"<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"$a4"<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"$a4"<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"$a5"<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"$a5"<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>a1 + a2<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>a1 + a2<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"a" + a2<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"a" + a2<!>,
|
||||||
"a" + topLevel,
|
"a" + topLevel,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!>"a" + a4<!>
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"a" + a4<!>
|
||||||
) val b = 1
|
) val b = 1
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,7 @@ class C {
|
|||||||
|
|
||||||
fun foo() = "foo"
|
fun foo() = "foo"
|
||||||
|
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_KCLASS_LITERAL!>"foo"::class<!>)
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL!>"foo"::class<!>)
|
||||||
fun test1() {}
|
fun test1() {}
|
||||||
|
|
||||||
@Ann(String::class)
|
@Ann(String::class)
|
||||||
@@ -28,8 +28,8 @@ fun test5() {}
|
|||||||
@Ann(C.Companion::class)
|
@Ann(C.Companion::class)
|
||||||
fun test6() {}
|
fun test6() {}
|
||||||
|
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_KCLASS_LITERAL!>foo()::class<!>)
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL!>foo()::class<!>)
|
||||||
fun test7() {}
|
fun test7() {}
|
||||||
|
|
||||||
@AnnArray(arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_KCLASS_LITERAL!>""::class<!>, String::class, AnObject::class))
|
@AnnArray(arrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL!>""::class<!>, String::class, AnObject::class))
|
||||||
fun test8() {}
|
fun test8() {}
|
||||||
+1
-1
@@ -17,7 +17,7 @@ fun test1_0() {}
|
|||||||
@Ann1(*["a", "b"])
|
@Ann1(*["a", "b"])
|
||||||
fun test1_1() {}
|
fun test1_1() {}
|
||||||
|
|
||||||
@Ann1(*<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>["a", 1, <!OI;ANNOTATION_PARAMETER_MUST_BE_CONST!>null<!>]<!>)
|
@Ann1(*<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>["a", 1, <!OI;ANNOTATION_ARGUMENT_MUST_BE_CONST!>null<!>]<!>)
|
||||||
fun test1_2() {}
|
fun test1_2() {}
|
||||||
|
|
||||||
@Ann2(*[])
|
@Ann2(*[])
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ val a8 = 1.div(a2)
|
|||||||
val a9 = 2 * (<!DIVISION_BY_ZERO!>1.div(0)<!>)
|
val a9 = 2 * (<!DIVISION_BY_ZERO!>1.div(0)<!>)
|
||||||
|
|
||||||
val b1: Byte = <!NI;TYPE_MISMATCH, DIVISION_BY_ZERO, TYPE_MISMATCH!>1 / 0<!>
|
val b1: Byte = <!NI;TYPE_MISMATCH, DIVISION_BY_ZERO, TYPE_MISMATCH!>1 / 0<!>
|
||||||
@Ann(<!DIVISION_BY_ZERO, ANNOTATION_PARAMETER_MUST_BE_CONST!>1 / 0<!>) val b2 = 1
|
@Ann(<!DIVISION_BY_ZERO, ANNOTATION_ARGUMENT_MUST_BE_CONST!>1 / 0<!>) val b2 = 1
|
||||||
|
|
||||||
annotation class Ann(val i : Int)
|
annotation class Ann(val i : Int)
|
||||||
@@ -18,9 +18,9 @@ annotation class Ann(val x: Int)
|
|||||||
@Ann(A.X)
|
@Ann(A.X)
|
||||||
fun main1() {}
|
fun main1() {}
|
||||||
|
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>A.Y<!>)
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>A.Y<!>)
|
||||||
fun main2() {}
|
fun main2() {}
|
||||||
|
|
||||||
val q = A()
|
val q = A()
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>q.z<!>)
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>q.z<!>)
|
||||||
fun main3() {}
|
fun main3() {}
|
||||||
|
|||||||
+6
-6
@@ -15,13 +15,13 @@ annotation class Ann(
|
|||||||
)
|
)
|
||||||
|
|
||||||
@Ann(
|
@Ann(
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Nested<!>::class<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Nested<!>::class<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Inner<!>::class<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Inner<!>::class<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Interface<!>::class<!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Interface<!>::class<!>,
|
||||||
<!UNRESOLVED_REFERENCE!>CONST<!>,
|
<!UNRESOLVED_REFERENCE!>CONST<!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Companion<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>CONST<!><!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Companion<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>CONST<!><!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Nested<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>CONST<!><!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Nested<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>CONST<!><!>,
|
||||||
<!ANNOTATION_PARAMETER_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Interface<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>CONST<!><!>,
|
<!ANNOTATION_ARGUMENT_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>Interface<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>CONST<!><!>,
|
||||||
<!UNRESOLVED_REFERENCE!>a<!>,
|
<!UNRESOLVED_REFERENCE!>a<!>,
|
||||||
<!UNRESOLVED_REFERENCE!>b<!>()
|
<!UNRESOLVED_REFERENCE!>b<!>()
|
||||||
)
|
)
|
||||||
|
|||||||
compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/array.kt
Vendored
+5
-5
@@ -2,11 +2,11 @@
|
|||||||
@Repeatable
|
@Repeatable
|
||||||
annotation class Ann(val i: IntArray)
|
annotation class Ann(val i: IntArray)
|
||||||
|
|
||||||
@Ann(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>)<!>)
|
@Ann(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>)<!>)
|
||||||
@Ann(intArrayOf(i2))
|
@Ann(intArrayOf(i2))
|
||||||
@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_ARGUMENT_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(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i3<!>)<!>)
|
||||||
@Ann(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!TYPE_MISMATCH!>intArrayOf(i, i2, i3)<!>)<!>)
|
@Ann(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!TYPE_MISMATCH, NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i3<!>)<!>)<!>)
|
||||||
class Test
|
class Test
|
||||||
|
|
||||||
var i = 1
|
var i = 1
|
||||||
@@ -19,6 +19,6 @@ fun foo(): Int = 1
|
|||||||
@Repeatable
|
@Repeatable
|
||||||
annotation class AnnAnn(val i: Array<Ann>)
|
annotation class AnnAnn(val i: Array<Ann>)
|
||||||
@AnnAnn(arrayOf(Ann(intArrayOf(1))))
|
@AnnAnn(arrayOf(Ann(intArrayOf(1))))
|
||||||
@AnnAnn(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>iAnn<!>)<!>)
|
@AnnAnn(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>arrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>iAnn<!>)<!>)
|
||||||
class TestAnn
|
class TestAnn
|
||||||
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(intArrayOf(1))<!>
|
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(intArrayOf(1))<!>
|
||||||
|
|||||||
+6
-6
@@ -4,14 +4,14 @@ annotation class Ann(val i: Int)
|
|||||||
annotation class AnnIA(val ia: IntArray)
|
annotation class AnnIA(val ia: IntArray)
|
||||||
annotation class AnnSA(val sa: Array<String>)
|
annotation class AnnSA(val sa: Array<String>)
|
||||||
|
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>MyClass().i<!>)
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>MyClass().i<!>)
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>)
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>)
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i2<!>)
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i2<!>)
|
||||||
@AnnIA(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>ia<!>)
|
@AnnIA(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>ia<!>)
|
||||||
@AnnSA(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>sa<!>)
|
@AnnSA(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>sa<!>)
|
||||||
class Test {
|
class Test {
|
||||||
val i = 1
|
val i = 1
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>) val i2 = 1
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>) val i2 = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
var i = 1
|
var i = 1
|
||||||
|
|||||||
+7
-7
@@ -2,14 +2,14 @@
|
|||||||
@Repeatable
|
@Repeatable
|
||||||
annotation class Ann(vararg val i: Int)
|
annotation class Ann(vararg val i: Int)
|
||||||
|
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>)
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>)
|
||||||
@Ann(i2)
|
@Ann(i2)
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i3<!>)
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i3<!>)
|
||||||
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_PARAMETER_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_PARAMETER_MUST_BE_CONST!>i<!>)<!>)
|
@Ann(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>intArrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>)<!>)
|
||||||
@Ann(*intArrayOf(i2))
|
@Ann(*intArrayOf(i2))
|
||||||
@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_ARGUMENT_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(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i<!>, i2, <!ANNOTATION_ARGUMENT_MUST_BE_CONST!>i3<!>)<!>)
|
||||||
class Test
|
class Test
|
||||||
|
|
||||||
var i = 1
|
var i = 1
|
||||||
@@ -22,6 +22,6 @@ fun foo(): Int = 1
|
|||||||
@Repeatable
|
@Repeatable
|
||||||
annotation class AnnAnn(vararg val i: Ann)
|
annotation class AnnAnn(vararg val i: Ann)
|
||||||
@AnnAnn(*arrayOf(Ann(1)))
|
@AnnAnn(*arrayOf(Ann(1)))
|
||||||
@AnnAnn(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>iAnn<!>)<!>)
|
@AnnAnn(*<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>arrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>iAnn<!>)<!>)
|
||||||
class TestAnn
|
class TestAnn
|
||||||
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(1)<!>
|
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(1)<!>
|
||||||
|
|||||||
+2
-2
@@ -12,9 +12,9 @@ class A2
|
|||||||
@Ann3(arrayOf(A1::class, A2::class))
|
@Ann3(arrayOf(A1::class, A2::class))
|
||||||
class MyClass1
|
class MyClass1
|
||||||
|
|
||||||
@Ann1(<!ANNOTATION_PARAMETER_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>A3<!>::class<!>)
|
@Ann1(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!><!UNRESOLVED_REFERENCE!>A3<!>::class<!>)
|
||||||
class MyClass2
|
class MyClass2
|
||||||
|
|
||||||
val x = A1::class
|
val x = A1::class
|
||||||
@Ann1(<!ANNOTATION_PARAMETER_MUST_BE_KCLASS_LITERAL!>x<!>)
|
@Ann1(<!ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL!>x<!>)
|
||||||
class MyClass3
|
class MyClass3
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
|||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
|
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
|
||||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||||
|
import org.jetbrains.kotlin.diagnostics.Errors
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.idea.search.restrictToKotlinSources
|
import org.jetbrains.kotlin.idea.search.restrictToKotlinSources
|
||||||
@@ -65,6 +66,8 @@ class AddAnnotationTargetFix(annotationEntry: KtAnnotationEntry) : KotlinQuickFi
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction<KtAnnotationEntry>? {
|
override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction<KtAnnotationEntry>? {
|
||||||
|
if (diagnostic.factory != Errors.WRONG_ANNOTATION_TARGET) return null
|
||||||
|
|
||||||
val entry = diagnostic.psiElement as? KtAnnotationEntry ?: return null
|
val entry = diagnostic.psiElement as? KtAnnotationEntry ?: return null
|
||||||
val annotationClass = entry.toAnnotationClass() ?: return null
|
val annotationClass = entry.toAnnotationClass() ?: return null
|
||||||
if (entry.useSiteTarget != null && entry.getRequiredAnnotationTargets(annotationClass, entry.project).isEmpty()) return null
|
if (entry.useSiteTarget != null && entry.getRequiredAnnotationTargets(annotationClass, entry.project).isEmpty()) return null
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// "Move annotation to receiver type" "false"
|
// "Move annotation to receiver type" "false"
|
||||||
// ERROR: This annotation is not applicable to target 'top level function' and use site target '@receiver'
|
// ERROR: This annotation is not applicable to target 'declaration' and use site target '@receiver'
|
||||||
// ACTION: Make internal
|
// ACTION: Make internal
|
||||||
// ACTION: Make private
|
// ACTION: Make private
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// "Move annotation to receiver type" "false"
|
// "Move annotation to receiver type" "false"
|
||||||
// ERROR: This annotation is not applicable to target 'top level property without backing field or delegate' and use site target '@receiver'
|
// ERROR: This annotation is not applicable to target 'declaration' and use site target '@receiver'
|
||||||
// ACTION: Make internal
|
// ACTION: Make internal
|
||||||
// ACTION: Make private
|
// ACTION: Make private
|
||||||
// ACTION: Specify type explicitly
|
// ACTION: Specify type explicitly
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// "Remove @ from annotation argument" "true"
|
// "Remove @ from annotation argument" "true"
|
||||||
// ERROR: An annotation parameter must be a compile-time constant
|
// ERROR: An annotation argument must be a compile-time constant
|
||||||
|
|
||||||
annotation class Y()
|
annotation class Y()
|
||||||
annotation class X(val value: Y, val y: Y)
|
annotation class X(val value: Y, val y: Y)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// "Remove @ from annotation argument" "true"
|
// "Remove @ from annotation argument" "true"
|
||||||
// ERROR: An annotation parameter must be a compile-time constant
|
// ERROR: An annotation argument must be a compile-time constant
|
||||||
|
|
||||||
annotation class Y()
|
annotation class Y()
|
||||||
annotation class X(val value: Y, val y: Y)
|
annotation class X(val value: Y, val y: Y)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// "Remove @ from annotation argument" "true"
|
// "Remove @ from annotation argument" "true"
|
||||||
// ERROR: An annotation parameter must be a compile-time constant
|
// ERROR: An annotation argument must be a compile-time constant
|
||||||
|
|
||||||
annotation class Y()
|
annotation class Y()
|
||||||
annotation class X(val value: Y)
|
annotation class X(val value: Y)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// "Remove @ from annotation argument" "true"
|
// "Remove @ from annotation argument" "true"
|
||||||
// ERROR: An annotation parameter must be a compile-time constant
|
// ERROR: An annotation argument must be a compile-time constant
|
||||||
|
|
||||||
annotation class Y()
|
annotation class Y()
|
||||||
annotation class X(val value: Y)
|
annotation class X(val value: Y)
|
||||||
|
|||||||
+1
-1
@@ -21,4 +21,4 @@ Exit code: ABORT
|
|||||||
------------------------------------------
|
------------------------------------------
|
||||||
COMPILATION FAILED
|
COMPILATION FAILED
|
||||||
Unresolved reference: test
|
Unresolved reference: test
|
||||||
An annotation parameter must be a compile-time constant
|
An annotation argument must be a compile-time constant
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
// EXPECTED_ERROR(kotlin:32:5) cannot find symbol
|
// EXPECTED_ERROR(kotlin:32:5) cannot find symbol
|
||||||
// EXPECTED_ERROR(kotlin:35:5) cannot find symbol
|
// EXPECTED_ERROR(kotlin:35:5) cannot find symbol
|
||||||
|
|
||||||
@file:Suppress("UNRESOLVED_REFERENCE", "ANNOTATION_PARAMETER_MUST_BE_CONST", "NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION")
|
@file:Suppress("UNRESOLVED_REFERENCE", "ANNOTATION_ARGUMENT_MUST_BE_CONST", "NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION")
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
@Anno(ABC::class)
|
@Anno(ABC::class)
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
// NO_VALIDATION
|
// NO_VALIDATION
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
@file:Suppress("UNRESOLVED_REFERENCE", "ANNOTATION_PARAMETER_MUST_BE_CONST", "NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION", "UNSUPPORTED_FEATURE")
|
@file:Suppress("UNRESOLVED_REFERENCE", "ANNOTATION_ARGUMENT_MUST_BE_CONST", "NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION", "UNSUPPORTED_FEATURE")
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ public final class MyType<T extends java.lang.Object> {
|
|||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import kotlin.reflect.KClass;
|
import kotlin.reflect.KClass;
|
||||||
|
|
||||||
@kotlin.Suppress(names = {"UNRESOLVED_REFERENCE", "ANNOTATION_PARAMETER_MUST_BE_CONST", "NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION", "UNSUPPORTED_FEATURE"})
|
@kotlin.Suppress(names = {"UNRESOLVED_REFERENCE", "ANNOTATION_ARGUMENT_MUST_BE_CONST", "NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION", "UNSUPPORTED_FEATURE"})
|
||||||
@kotlin.Metadata()
|
@kotlin.Metadata()
|
||||||
public final class NonExistentClassTypesConversionKt {
|
public final class NonExistentClassTypesConversionKt {
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user