Files
kotlin-fork/compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.fir.kt
T
Dmitrii Gridin 06aad65ed3 [FIR] pass correct scope during annotation resolve for local declarations
We should pass container for correct logic around CLASS_HEADER_ANNOTATIONS.
Also, such correct containers will be used in the context of KT-63042 to
correctly detect an annotation ownership

^KT-63042
^KT-63842 Fixed
2023-11-29 10:24:03 +00:00

16 lines
1.4 KiB
Kotlin
Vendored

@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(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"class $prop"<!>)
<!NESTED_CLASS_NOT_ALLOWED!>class InnerClass<!><@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"type param $prop"<!>) T : @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"bound $prop"<!>) List<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"nested bound $prop"<!>) Int>> : @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"super type $prop"<!>) A<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"nested super type $prop"<!>) List<@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"nested nested super type $prop"<!>) Int>>()
}
}