[FIR] add more tests on annotations for local declarations
^KT-63842
This commit is contained in:
committed by
Space Team
parent
98e12b0d7b
commit
fcb3f003dc
+15
@@ -0,0 +1,15 @@
|
||||
@Target(AnnotationTarget.TYPE, AnnotationTarget.CLASS, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class Anno(val position: String)
|
||||
|
||||
open class A<T>
|
||||
|
||||
fun foo() {
|
||||
val localProp = 1
|
||||
@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"class $localProp"<!>)
|
||||
class OriginalClass<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"type param $localProp"<!>) T : @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"bound $localProp"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested bound $localProp"<!>) Int>> : @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"super type $localProp"<!>) A<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested super type $localProp"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested nested super type $localProp"<!>) Int>>() {
|
||||
val prop = 0
|
||||
|
||||
@Anno("class $<!UNRESOLVED_REFERENCE!>prop<!>")
|
||||
<!NESTED_CLASS_NOT_ALLOWED!>class InnerClass<!><@Anno("type param $<!UNRESOLVED_REFERENCE!>prop<!>") T : @Anno("bound $<!UNRESOLVED_REFERENCE!>prop<!>") List<@Anno("nested bound $<!UNRESOLVED_REFERENCE!>prop<!>") Int>> : @Anno("super type $<!UNRESOLVED_REFERENCE!>prop<!>") A<@Anno("nested super type $<!UNRESOLVED_REFERENCE!>prop<!>") List<@Anno("nested nested super type $<!UNRESOLVED_REFERENCE!>prop<!>") Int>>()
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
@Target(AnnotationTarget.TYPE, AnnotationTarget.CLASS, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class Anno(val position: String)
|
||||
|
||||
open class A<T>
|
||||
|
||||
fun foo() {
|
||||
val localProp = 1
|
||||
@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"class $localProp"<!>)
|
||||
class OriginalClass<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"type param $localProp"<!>) T : @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"bound $localProp"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested bound $localProp"<!>) Int>> : @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"super type $localProp"<!>) A<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested super type $localProp"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested nested super type $localProp"<!>) Int>>() {
|
||||
val prop = 0
|
||||
|
||||
@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"class $<!UNRESOLVED_REFERENCE!>prop<!>"<!>)
|
||||
<!NESTED_CLASS_NOT_ALLOWED!>class InnerClass<!><@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"type param $<!UNRESOLVED_REFERENCE!>prop<!>"<!>) T : @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"bound $<!UNRESOLVED_REFERENCE!>prop<!>"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested bound $<!UNRESOLVED_REFERENCE!>prop<!>"<!>) Int>> : @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"super type $<!UNRESOLVED_REFERENCE!>prop<!>"<!>) A<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested super type $<!UNRESOLVED_REFERENCE!>prop<!>"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested nested super type $<!UNRESOLVED_REFERENCE!>prop<!>"<!>) Int>>()
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
annotation class Anno(val position: String)
|
||||
|
||||
fun foo() {
|
||||
class OriginalClass {
|
||||
val prop = 0
|
||||
|
||||
@Anno("dangling $<!UNRESOLVED_REFERENCE!>prop<!>")<!SYNTAX!><!>
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
annotation class Anno(val position: String)
|
||||
|
||||
fun foo() {
|
||||
class OriginalClass {
|
||||
val prop = 0
|
||||
|
||||
@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"dangling $prop"<!>)<!SYNTAX!><!>
|
||||
}
|
||||
}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
annotation class Anno(val position: String)
|
||||
|
||||
fun foo() {
|
||||
class MyClass {
|
||||
val prop = 0
|
||||
|
||||
<!WRONG_ANNOTATION_TARGET!>@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"init $prop"<!>)<!> init {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
annotation class Anno(val position: String)
|
||||
|
||||
fun foo() {
|
||||
class MyClass {
|
||||
val prop = 0
|
||||
|
||||
<!WRONG_ANNOTATION_TARGET!>@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"init $prop"<!>)<!> init {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
@Target(AnnotationTarget.TYPE, AnnotationTarget.TYPEALIAS, AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class Anno(val position: String)
|
||||
|
||||
fun foo() {
|
||||
class OriginalClass<T> {
|
||||
val prop = 0
|
||||
|
||||
<!TOPLEVEL_TYPEALIASES_ONLY!>@Anno("alias $<!UNRESOLVED_REFERENCE!>prop<!>")
|
||||
typealias NestedTypeAlias <@Anno("type param $<!UNRESOLVED_REFERENCE!>prop<!>") A : <!BOUND_ON_TYPE_ALIAS_PARAMETER_NOT_ALLOWED!>@Anno("bound $<!UNRESOLVED_REFERENCE!>prop<!>") Number<!>> = @Anno("type $<!UNRESOLVED_REFERENCE!>prop<!>") OriginalClass<A><!>
|
||||
}
|
||||
}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
@Target(AnnotationTarget.TYPE, AnnotationTarget.TYPEALIAS, AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class Anno(val position: String)
|
||||
|
||||
fun foo() {
|
||||
class OriginalClass<T> {
|
||||
val prop = 0
|
||||
|
||||
<!TOPLEVEL_TYPEALIASES_ONLY!>@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"alias $prop"<!>)
|
||||
typealias NestedTypeAlias <@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"type param $prop"<!>) A : <!BOUND_ON_TYPE_ALIAS_PARAMETER_NOT_ALLOWED!>@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"bound $prop"<!>) Number<!>> = @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"type $prop"<!>) OriginalClass<A><!>
|
||||
}
|
||||
}
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// WITH_STDLIB
|
||||
@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE_PARAMETER, AnnotationTarget.PROPERTY)
|
||||
annotation class Anno(val position: String)
|
||||
|
||||
fun foo() {
|
||||
class OriginalClass {
|
||||
val prop = 0
|
||||
|
||||
@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"function $prop"<!>)
|
||||
fun <@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"type param $prop"<!>) F : @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"bound $prop"<!>) List<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"nested bound $prop"<!>) List<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"nested nested bound $prop"<!>) String>>> @receiver:Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"receiver annotation: $prop"<!>) @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"receiver type $prop"<!>) Collection<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"nested receiver type $prop"<!>) List<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"nested nested receiver type $prop"<!>)String>>.explicitType(@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"parameter annotation $prop"<!>) param: @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"parameter type $prop"<!>) ListIterator<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"nested parameter type $prop"<!>) List<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"nested nested parameter type $prop"<!>)String>>): @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"explicitType return type $prop"<!>) List<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"explicitType nested return type $prop"<!>) List<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"explicitType nested nested return type $prop"<!>) Int>> = emptyList()
|
||||
|
||||
@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"property $prop"<!>)
|
||||
val <@Anno("type param $<!UNRESOLVED_REFERENCE!>prop<!>") F : @Anno("bound $<!UNRESOLVED_REFERENCE!>prop<!>") Number> @receiver:Anno("receiver annotation: $<!UNRESOLVED_REFERENCE!>prop<!>") @Anno("receiver type $<!UNRESOLVED_REFERENCE!>prop<!>") F.explicitType: @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"bound $prop"<!>) Int get() = 1
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// WITH_STDLIB
|
||||
@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE_PARAMETER, AnnotationTarget.PROPERTY)
|
||||
annotation class Anno(val position: String)
|
||||
|
||||
fun foo() {
|
||||
class OriginalClass {
|
||||
val prop = 0
|
||||
|
||||
@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"function $prop"<!>)
|
||||
fun <@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"type param $prop"<!>) F : @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"bound $prop"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested bound $prop"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested nested bound $prop"<!>) String>>> @receiver:Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"receiver annotation: $prop"<!>) <!REPEATED_ANNOTATION!>@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"receiver type $prop"<!>)<!> Collection<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested receiver type $prop"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested nested receiver type $prop"<!>)String>>.explicitType(@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"parameter annotation $prop"<!>) param: @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"parameter type $prop"<!>) ListIterator<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested parameter type $prop"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"nested nested parameter type $prop"<!>)String>>): @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"explicitType return type $prop"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"explicitType nested return type $prop"<!>) List<@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"explicitType nested nested return type $prop"<!>) Int>> = emptyList()
|
||||
|
||||
@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"property $prop"<!>)
|
||||
val <@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"type param $prop"<!>) F : @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"bound $prop"<!>) Number> @receiver:Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"receiver annotation: $prop"<!>) <!REPEATED_ANNOTATION!>@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"receiver type $prop"<!>)<!> F.explicitType: @Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST!>"bound $prop"<!>) Int get() = 1
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user