[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
This commit is contained in:
committed by
Space Team
parent
fcb3f003dc
commit
06aad65ed3
+2
-2
@@ -9,7 +9,7 @@ fun foo() {
|
||||
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>>()
|
||||
@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>>()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,6 +4,6 @@ annotation class Anno(val number: Int)
|
||||
|
||||
fun topLevelFun() {
|
||||
class LocalClass {
|
||||
val @receiver:Anno(42.<!UNRESOLVED_REFERENCE!>prop<!>) Int.prop get() = 22
|
||||
val @receiver:Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>42.prop<!>) Int.prop get() = 22
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -6,6 +6,6 @@ annotation class Anno(val number: Int)
|
||||
|
||||
fun topLevelFun() {
|
||||
class LocalClass {
|
||||
val <@Anno(42.<!UNRESOLVED_REFERENCE!>prop<!>) T> T.prop get() = 22
|
||||
val <@Anno(<!ANNOTATION_ARGUMENT_MUST_BE_CONST, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>42.prop<!>) T> T.prop get() = 22
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,6 +4,6 @@ fun foo() {
|
||||
class OriginalClass {
|
||||
val prop = 0
|
||||
|
||||
@Anno("dangling $<!UNRESOLVED_REFERENCE!>prop<!>")<!SYNTAX!><!>
|
||||
@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"dangling $prop"<!>)<!SYNTAX!><!>
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -5,7 +5,7 @@ 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><!>
|
||||
<!TOPLEVEL_TYPEALIASES_ONLY!>@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"alias $prop"<!>)
|
||||
typealias NestedTypeAlias <@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"type param $prop"<!>) A : <!BOUND_ON_TYPE_ALIAS_PARAMETER_NOT_ALLOWED!>@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"bound $prop"<!>) Number<!>> = @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"type $prop"<!>) OriginalClass<A><!>
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -10,6 +10,6 @@ fun foo() {
|
||||
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
|
||||
val <@Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"type param $prop"<!>) F : @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"bound $prop"<!>) Number> @receiver:Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"receiver annotation: $prop"<!>) @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"receiver type $prop"<!>) F.explicitType: @Anno(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>"bound $prop"<!>) Int get() = 1
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user