[FE] Relax rules of matching @Target annotation on expect and actual

Allow `expect` targets to be subset of `actual`.

^KT-58551
This commit is contained in:
Roman Efremov
2023-07-17 14:55:03 +02:00
committed by Space Team
parent ad84c83ee9
commit 6611a55a60
15 changed files with 202 additions and 21 deletions
@@ -0,0 +1,33 @@
// MODULE: m1-common
// FILE: common.kt
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
expect annotation class ExpectIsSubsetOfActual
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
expect annotation class ExpectIsSubsetOfActualDifferentOrder
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
expect annotation class MoreTargetsOnExpect
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
expect annotation class RepeatedTargetsInExpect
@Target(allowedTargets = [])
expect annotation class EmptyTargetsActual
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
@Target(AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.CLASS)
actual annotation class ExpectIsSubsetOfActual
@Target(AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.CLASS)
actual annotation class ExpectIsSubsetOfActualDifferentOrder
<!ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT!>@Target(AnnotationTarget.FUNCTION)
actual annotation class MoreTargetsOnExpect<!>
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS, AnnotationTarget.TYPEALIAS)
actual annotation class RepeatedTargetsInExpect
@Target(AnnotationTarget.FUNCTION)
actual annotation class EmptyTargetsActual
@@ -0,0 +1,33 @@
// MODULE: m1-common
// FILE: common.kt
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
expect annotation class ExpectIsSubsetOfActual
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
expect annotation class ExpectIsSubsetOfActualDifferentOrder
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
expect annotation class MoreTargetsOnExpect
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
expect annotation class RepeatedTargetsInExpect
@Target(allowedTargets = [])
expect annotation class EmptyTargetsActual
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
@Target(AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.CLASS)
actual annotation class ExpectIsSubsetOfActual
@Target(AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.CLASS)
actual annotation class ExpectIsSubsetOfActualDifferentOrder
@Target(AnnotationTarget.FUNCTION)
actual annotation class <!ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT!>MoreTargetsOnExpect<!>
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS, AnnotationTarget.TYPEALIAS)
actual annotation class RepeatedTargetsInExpect
@Target(AnnotationTarget.FUNCTION)
actual annotation class EmptyTargetsActual
@@ -10,7 +10,8 @@
AnnotationTarget.CONSTRUCTOR,
AnnotationTarget.PROPERTY_SETTER,
AnnotationTarget.PROPERTY_GETTER,
// removed target TYPEALIAS
AnnotationTarget.TYPEALIAS,
AnnotationTarget.TYPE, // added target
)
expect annotation class MyDeprecatedNotMatch
@@ -10,7 +10,8 @@
AnnotationTarget.CONSTRUCTOR,
AnnotationTarget.PROPERTY_SETTER,
AnnotationTarget.PROPERTY_GETTER,
// removed target TYPEALIAS
AnnotationTarget.TYPEALIAS,
AnnotationTarget.TYPE, // added target
)
expect annotation class MyDeprecatedNotMatch